Curry & Fold - Каковы этимологии в программном смысле? Я не вижу, как какое-либо из английских значений этих homonyms связано с функциональностью этих терминов.Функциональное программирование: Curry & Fold - каковы этимологии?
Если вам нужно было переименовать их в нечто более очевидное - как вы это сделаете?
ответ
Я считаю, что термин «складки» происходит в основном из-за употребления слова «сгиб» в фразах типа "to fold into...", который является термином, который обычно используется шеф-поварами, я считаю (я смотрю много кулинарных шоу ...). Мы используем его в контексте функционального программирования, потому что мы говорим, что, например, для списков глава списка «сворачивается» в результате складывания хвоста. Например, функция foldr
является «рецептом» для того, как «готовить» список, и часть этого рецепта «сбрасывает это на это», если хотите.
Старейший ссылка на «складной», что я смог найти в Интернете в контексте функционального программирования в this отчете, опубликованном в 1985 году в Кембриджском университете, который имеет это сказать:
функция сбор применяет функцию двух аргументов «между» каждым элементом списка и значением терминала. [...] Эта функция также известна как уменьшить или раз на других языках.
Так ясно, что термин «сгиб» был хотя бы несколько распространен даже 30 лет назад!
Я также родился в 1985 году, но мне всего 30 ... –
Математика трудна .. извините. – user2407038
ваше редактирование только что убило мою шутку! –
Карри фамилия Haskell Curry, известный логик after whom Haskell got its name 20-го века.
И «складывание» просто потому, что оператор складки фигурально представляет собой складку, например, руку карт можно сложить, чтобы она выглядела как одна карта. Подумайте о foldr (+) 0 [1,2,3] == 6
как к руке карт 1, 2 и 3, сложенных в одну карточку. 6.
Слово «сокращение», которое также означает складное, можно проиллюстрировать с использованием аналогичной аналогии.
Конечно, Haskell более волшебный, чем даже самая бледная и удачная игра в покер, поэтому складки в функциональном программировании могут фактически создавать колоду карт, в которой больше карт, чем рука, из которой она складывалась, или карты можно сложить в кошки и т. д .: foldr (\i, acc -> [show i,show i,show i] ++ acc) [] [1,2,3] == ["1","1","1","2","2","2","3","3","3"]
. Поэтому то, что начиналось, как складывание, в конечном итоге превратилось в чрезвычайно универсального оператора, который может производить map
, а также filter
и т. Д., Поэтому не слишком увлекайтесь сравнением покера и этимологией.
Что касается того, что назвать их: переименование мертвого человека, возможно, не является самой этичной задачей. Бедный парень настолько успешный, что его имена используются для больших вещей, а затем вы хотите лишить его посмертно его радости и переименовать его в нечто другое? Если, возможно, что-то еще не Ньютон Уотт Сковилл или Кельвин Цельсий Энгстрём, я бы серьезно не пытался переименовать.
Однако, если вы имели в виду переименование концепции программирования: вместо этого вместо этого можно было бы назвать имя «ricing» в моем голодном мнении. Но мистер Карри все еще может быть запуган.
Складывание может быть переименовано в блеф, если вы не выполнили the multitude of presently available names for it - благодаря som-snytt для конструктивной идеи.
Вы складываетесь в покере, когда у вас слабая рука, а блеф не вариант. Вы используете fold, когда у вас нет более мощного оператора, и вы держите пари, что никто не назовет ваш блеф и не спросит, как ваши вычисления дают результат, который он делает. –
Является ли это основой для будущего языка программирования в парадигме вероятностного и психологического программирования, @ som-snytt –
@ Эрик Алик, более слабая версия рекурсии? – rapt
Карри - фамилия логика Хаскелла Карри. – dfeuer
Складывание иногда называют сокращением. Функции, которые складываются, иногда называют катаморфизмами. Я не знаю, что это лучше. – dfeuer
Вы можете найти ссылки на историю * идеи * складывания в классике Грэма Хаттона [Учебник по универсальности и выразительности складок] (http://www.cs.nott.ac.uk/~pszgmh/fold. pdf), в котором прослеживается его теория рекурсии Клейна, оператор сокращения APL и оператор вставки FP, но они, похоже, не попадают в этимологию. – dfeuer