Какова история класса класса Functor?
Я пытаюсь получить действительно глубокое понимание иерархии классов Monad
. Частью этого является, конечно, много примеров, но меня особенно интересует история того, как эти классы были впервые обнаружены и их мотивации.
Я понимаю, что Monad
появился первоначально как решение проблемы IO в Haskell, и я знаком с документами Могги и Вадлера в 1989-1992 годах, которые их представили.
Я также видел, где Applicatives
были введены в Конор Макбрайд и Росс Патерсон "Аппликативное программирование с эффектами".
По моему вопросу, насколько популяризированы Functor
s, и когда они появились? Я предполагаю, что это должно быть после Monad
, поскольку Functor
не является суперклассом, но люди не использовали обобщенные функции карты с первых дней LISP?
Ответы
Ответ 1
Functor
был в версии версии Haskell версии 1.3, которая стандартизировала как монодичные классы ввода-вывода, так и классы более высокого класса. Итак, класс Functor
выглядит так же стара, как и тип монады. И, более того, Functor
- первый мотивирующий пример в статье Джонса, вводящий "классы конструкторов!". Вы могли бы сказать, что бумага Джонса популяризировала эту идею, но, как вы указываете, люди давно хотели обобщить карты.