我正在学习使用Clojure进行函数式编程,并希望加深对函数式范式的理论理解(不仅仅是Clojure语法)。
我正在寻找有关每种函数式技术(例如递归、map、reduce、cons、first和rest)之间的关系的公理或公式,可以从哪些技术中派生/组合,以及哪些是背后的终极公理。
例如,我意识到map
只能使用recur
、first
、rest
和cons
函数以及传递给map
的映射函数来实现。
之后,我又意识到map
也可以使用reduce
实现,而reduce
可以再次使用recur
、first
和rest
实现。同时filter
也可以使用reduce
实现。
我觉得我开始理解函数式编程了,但是仍然很难看到哪些是最终建筑块,即用于组成任意函数的最小集合的抽象或关键字是什么。在map示例中,第二种方法使用一个较少的抽象来达到相同的目标。那么,函数式范式的一些终极公理可以帮助我看清大局吗?
map
也可以用for
替代。 - Alan Thompson