我正在学习函数式编程Clojure,并希望加深我对函数范式(而不仅仅是Clojure的语法)的理论理解。函数式编程公理
我想找公理或公式像递归,图中的每个功能的技术如何,减少,利弊,第一ANS其余涉及对方,这是衍生/从该组合的,并且其一切背后的终极公理。
例如,我意识到map
只能使用recur
,first
,rest
和cons
功能,当然映射函数本身传递给map
来实现。
在那之后,我也意识到map
可以使用reduce
也实现,并再次减少可使用recur
,first
和rest
实施。 filter
也可以用reduce
来实现。
我觉得我开始换我周围的函数式编程的头,但它仍然是很难看到,这是最极致的建筑块,即这是最低组的抽象或关键字组成任意的功能。在地图示例中,第二种方法使用一个较少的抽象来定位相同的目标。那么,功能范式的一些最终公理是如何帮助我看到大局的?
在这种情况下,我会建议你看看这本书:https://mitpress.mit.edu/books/little-schemer这是一个了不起的FP介绍,告诉你如何使用一个基本的数字的元素。经典的[SICP](https://mitpress.mit.edu/sicp/full-text/book/book.html)也可以提供很多帮助。他们两个都雇用lisp(准确地说,方案),所以很容易将你的理解转化为clojure – leetwinski
函数式编程大部分根源于Lamda微积分,核心公理如下面的amalloy所述。 –
不要忘了,'map'也可以替换为'for' –