Что общего у "carrying" и "lambda calculus"?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 30.06.21 19:41
Оценка:
Во всех статьях, где описывается что такое каррирование вопрос зачем оно — выносят за рамки статьи.
Приведу цитаты:

Currying provides a way for working with functions that take multiple arguments,
and using them in frameworks where functions might take only one argument.
For example, some analytical techniques can only be applied to functions with a single argument.
Practical functions frequently take more arguments than this.

(какие именно аналитические техники могут быть применены только к функциям одного аргумента?)

Карирование это не продвинутая техника/паттерн работы с функциями.
Это необходимость возникшая в рамках лямбда исчислений,
где вводить функции работающие от более чем одного аргумента
это усложнять красивую стройную концепцию.

(и в чём же суть этого усложнения? что за концепция?)

Меня не интересуют "передача коллбеков по-человечески", "оно используется в LINQ", "удобно в Unit-тестировании".

Меня интересует только для доказательства корректности программ.
(Я прочитал книжку, которую рекомендовали
Автор: Pzz
Дата: 28.02.21
, Дейкстры,
и там было интересно про алгоритм НОД при помощи специальной машины-не-компьютера,
но до практического написания доказуемо корректных программ у меня пока не дошло).

Статьи в интернете слишком короткие и не связанные между собой.
Книжки слишком сложные. А учить меня никто не обязан. Как жить?
Отредактировано 01.07.2021 6:22 Эйнсток Файр . Предыдущая версия .
Re: Что общего у "carrying" и "lambda calculus"?
От: varenikAA  
Дата: 01.07.21 04:23
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Статьи в интернете слишком короткие и не связанные между собой.

ЭФ>Книжки слишком сложные. А учить меня никто не обязан. Как жить?
Ищите правильные книжки. Можно забить на все и так и жить.

Irdis не пробовали? Там доказательства и прочая ересь.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 01.07.2021 6:32 Разраб . Предыдущая версия .
Re: Что общего у "carrying" и "lambda calculus"?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 02.07.21 15:25
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>где вводить функции работающие от более чем одного аргумента

ЭФ>это усложнять красивую стройную концепцию.[/q]
ЭФ>(и в чём же суть этого усложнения? что за концепция?)

В простейшем лямбда исчислении всего три конструкции: "var", "λvar. term" и "term term".
Добавление туда функций от нескольких параметров уже делает его сложнее без особой надобности.
Re: Что общего у "carrying" и "lambda calculus"?
От: trop Россия  
Дата: 15.07.21 14:32
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Во всех статьях, где описывается что такое каррирование вопрос зачем оно — выносят за рамки статьи.

ЭФ>Статьи в интернете слишком короткие и не связанные между собой.
ЭФ>Книжки слишком сложные. А учить меня никто не обязан. Как жить?

функции от кортежей f(a,b,c) не подходят для частичного применения одного аргумента (бета редукция, сокращение выражения),
каррирование это преобразование определения функции из плоского f(a,b,c) в древовидное f(a)(b)(c), т.е. более функциональное,
когда можно по очереди применять параметры

  f
 / \
a   f'
   / \
  b   f''
     / \
    c   = a + b + c
-
Re: Что общего у "carrying" и "lambda calculus"?
От: sergii.p  
Дата: 15.08.23 14:20
Оценка: +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>(какие именно аналитические техники могут быть применены только к функциям одного аргумента?)


например монады, аппликаторы, функторы.
Мы рассматриваем объект к которому можно применить функцию только одного аргумента (второй нам физически неоткуда взять). Если бы каррирование было невозможно (как в математическом понимании так и на уровне языка), то весь механизм функторов оказался бы применим только частично.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.