【发布时间】:2017-10-03 16:05:49
【问题描述】:
我正在学习使用 Clojure 进行函数式编程,并希望加深对函数式范式(不仅仅是 Clojure 的语法)的理论理解。
我正在寻找 axioms 或 formulas 每种功能技术(如 recursion、map、reduce、cons、first ans rest 的关系彼此,哪个是可派生/可组合的,哪个是一切背后的终极公理。
例如,我意识到map只能使用recur、first、rest和cons函数来实现,当然映射函数本身也传递给map。
在那之后,我也意识到map 也可以使用reduce 来实现,而reduce 也可以使用recur、first 和rest 来实现。 filter 也可以用 reduce 来实现。
我觉得我开始专注于函数式编程,但仍然很难看出哪些是最终极的构建块,即哪些是抽象或的最小集合关键字 组成任意函数。对于地图示例,第二种方法使用较少的抽象来定位相同的目标。那么,有哪些功能范式的终极公理可以帮助我了解全局?
【问题讨论】:
-
在这种情况下,我建议您查看这本书:mitpress.mit.edu/books/little-schemer 这是对 FP 的精彩介绍,向您展示了如何仅使用基本数量的元素来制作事物。经典的SICP 也有很大帮助。两者都使用 lisp(确切地说是方案),因此很容易将您的理解转移到 clojure
-
函数式编程在很大程度上植根于拉姆达微积分,核心公理如下所示。
-
别忘了
map也可以换成for
标签: function clojure functional-programming reduce higher-order-functions