1.什么是函数式编程?
函数是一等公民,一切都是函数。
2.常用语言?
Lisp各种方言:Common Lisp:开发、Scheme:数学、Clojure:JVM
Haskell:数学
Erlang:开发(类似Haskell)
Functional Javascript:Web开发(函数式模式下的Javascript)
Python:开发(据说借鉴Haskell)
3.一些例子?
(P.S.以下例子用的是伪代码,看得懂就行。)
({X}的意思是获取X的每一个元素,返回一个数组。)
1.快速排序
定义:
在序列中,以某一个数(一般是sequence head)为基准数,将小于它的放在左边,其他的放在右边,之后对其左右进行如此规则。
实现:
qsort([])=[]
qsort([H|T])=qsort([<H || T]) . [] . qsort([>=H || T])
2.数独
定义:
每行每列以及每个3*3组成的‘宫’中只允许1~9每个数字出现一次(也就是说从小到大排序后序列为[1,2,3,4,5,6,7,8,9])。
实现:
check(X)=
sort({X})==sort({Transpose(X)})==sort(split({X},3,3))==repeat([1,2,3,4,5,6,7,8,9],9)