Понимание проблемы происходит от Heilperin's et al. "Concrete Abstraction". Я получил, что currying - это перевод оценки функции, которая принимает несколько аргументов в оценку последовательности функций, каждая из которых имеет один аргумент. У меня есть четкие смысловые различия между двумя подходами (можно ли назвать их таким образом?), Но я уверен, что не понял практических последствий этих двух подходов.Currying: практические последствия
Пожалуйста, обратите внимание, в OCaml:
# let foo x y = x * y;;
foo : int -> int -> int = <fun>
и
# let foo2 (x, y) = x * y;;
foo2 : int * int -> int = <fun>
Результаты будут одинаковыми для двух функций. Но, практически, что делает две функции разными? Читаемость? Вычислительная эффективность? Мой недостаток опыта не дает этой проблеме адекватное чтение.
Разве вы не хотите сравнивать 'let foo x y = x * y ;;' и 'let foo = fun x -> fun y -> x * y ;;' ?? –
Вы правы, спасибо, что помогли мне сделать это яснее. – Worice