了解一个字段的问题对我有很大的帮助,特别是因为它允许我与那些比我更了解的人聪明地交谈,所以我想找到一个很好的函数式编程术语。
例如,我反复遇到这些:Functor,Arrow,Category,Kleisli,Monad,Monoid,一个名副其实的态射动物园等。我也注意到其中许多出现了前缀,如“covariant”,“co-”, “endo-”等。
其中,我可以说我实际上理解Monoid和Covariant有点得到Monad,但其余的对我来说仍然是胡言乱语。 (请注意,我并不是说这个列表是详尽的,我不打算在这里定义或描述这些,我正在寻找学习资源。)
有人能指出我的FP词汇吗?它不需要在线,只要有可能找到它(并且这不是一个我不得不支付数十美元的罕见量。)
答案 0 :(得分:9)
正如其他答案所指出的,要真正理解这些术语,你必须学习类别理论。然而,类别理论是非常抽象的,可能无法帮助你立即建立直觉。为了查看实际的抽象概念,我强烈推荐使用类型类别(PDF)(blog announcement)。
答案 1 :(得分:7)
这些不是功能编程术语;他们是类别理论的术语。确实,少数精英功能程序员似乎使用类别理论来深入了解函数式编程(Conal Elliott,Ralf Hinze,Chung-Chieh Shan,给你的办公室打电话),但这些人是少数。关于这些条款,我在与皮尔斯的书中挣扎,但我不知道更好的来源 - 尽管Dan Piponi在他的博客上有很多相关资料;我鼓励你去看那里。 ( 2012更新:哈罗德西蒙斯有一本关于类别理论的新书看起来相当不错,并且计算评论 [在付费专区背后]得到了很好的评论。唯一的抱怨这些例子都来自数学而不是计算。)
您可能会从功能程序员那里听到一些词:“地图功能”,“折叠功能”,“高阶功能”,“无点编程”,“和型”,“产品类型”,“催眠状态”, “教会编码”,“计算程序”,“类型导向编程”,“正确尾调用”,“累积参数”。我不知道聚集在一个地方的好词汇。 Graham Hutton的书
答案 2 :(得分:5)
您使用的许多术语都来自类别理论,我所知道的最佳资源是Benjamin Pierce的“计算机科学家基本范畴理论”