我试图深入理解类的Monad
层次结构。当然,部分原因是看到了很多例子,但我对这些课程最初被发现的历史及其动机特别感兴趣。
我理解Monad
最初是作为Haskell中IO问题的解决方案而来的,并且熟悉Moggi和Wadler在1989-92介绍它们的论文。
我还看到Conor McBride和Ross Paterson在“有效的应用程序设计”中引入Applicatives
的地方。
我的问题是推广Functor
的问题,它们何时出现?我假设它必须在Monad
之后,因为Functor
不是超类,但是从LISP的早期开始就没有人使用广义映射函数?
答案 0 :(得分:14)
Functor
出现在Haskell报告的1.3版本中,它标准化了monadic IO和更高级的kinded类型。因此,Functor
类型类与monad类型类一样古老。而且,Functor
是琼斯论文介绍“构造函数类”的第一个激励性例子!你可能会说琼斯的论文推广了这个想法,但正如你所指出的那样,人们长期以来一直想要广义地图。