Какова история класса класса Functor?

Я пытаюсь получить действительно глубокое понимание иерархии классов Monad. Частью этого является, конечно, много примеров, но меня особенно интересует история того, как эти классы были впервые обнаружены и их мотивации.

Я понимаю, что Monad появился первоначально как решение проблемы IO в Haskell, и я знаком с документами Могги и Вадлера в 1989-1992 годах, которые их представили.

Я также видел, где Applicatives были введены в Конор Макбрайд и Росс Патерсон "Аппликативное программирование с эффектами".

По моему вопросу, насколько популяризированы Functor s, и когда они появились? Я предполагаю, что это должно быть после Monad, поскольку Functor не является суперклассом, но люди не использовали обобщенные функции карты с первых дней LISP?

Ответ 1

Functor был в версии версии Haskell версии 1.3, которая стандартизировала как монодичные классы ввода-вывода, так и классы более высокого класса. Итак, класс Functor выглядит так же стара, как и тип монады. И, более того, Functor - первый мотивирующий пример в статье Джонса, вводящий "классы конструкторов!". Вы могли бы сказать, что бумага Джонса популяризировала эту идею, но, как вы указываете, люди давно хотели обобщить карты.