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