Почему функция для перевода значения в функтор с именем pure
в Control.Applicative?Именование функции `pure` в Control.Applicative
ответ
Подумайте о pure
в качестве прилагательного.
foo <*> pure 4
= foo
применяется на значении 4
чистого.
(Что касается точной причине почему это называется pure
, возможно только МакБрайд и Патерсон будет знать.)
Спасибо. Я почему-то удивлялся * почему *, но если я понимаю вас правильно, это довольно произвольно. –
Это немного похоже на fromInteger
. Его аргумент всегда является чистым значением или функцией, которая будет поднята в функтор. Возможно, это должно было быть fromPure
, но вы знаете, как люди Haskell любят сокращать имена (например, fst
и snd
вместо first
и second
...).
Обратите внимание, что 'first' и' second' также являются функциями в 'Control.Arrow'. Я уверен, что они пришли позже. –
Хм. Я думал, что 'fst' и' snd' пришли из ML, но это основано только на том, что ML старше Haskell. Быстрый поиск показывает документ [«ML под Unix на VAX»] (http://lucacardelli.name/Papers/MLUnix.pdf), который, как представляется, с середины 80-х годов (в нем нет ссылок, новее чем в 1983 году, и рассказывает, как установить ML с ленты). В документе используются 'fst' и' snd', поэтому похоже, что мое предположение было не слишком далеким. –
'fst' и' snd' были в Haskell с тех пор, как я начал использовать этот язык (1992), а в 2000 году появилось стрелочки с бумажными вложениями Hughes. Я бы назвал функции стрелок 'onFirst' и' onSecond'. – yatima2975
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что этот вопрос не связан с практической проблемой программирования, изложенной в [help/on-topic]. –