浅谈函数式编程

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)

推荐阅读更多精彩内容