最近在TSS看到对Dave Thomas的访谈,他提到了Haskell语言,我看了一下确实很有吸引力。美国的很多著名大学的计算机课程都是从函数型语言Lisp等开始的,但我感觉Lisp比较不好学,看着那些括号就头晕,相对来说Haskell要容易入门一些,这个语言是以一位计算机科学家的名字命名的。
百闻不如一见,对比一下下面的快速排序算法就知道好处了。
这种语言更接近于算法本身和数学,摆脱那些烦人的细节,好处太多了。
Quicksort in Haskell
qsort [] = [] qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x where elts_lt_x = [y | y <- xs, y < x] elts_greq_x = [y | y <- xs, y >= x]
Quicksort in C
qsort( a, lo, hi ) int a[], hi, lo; { int h, l, p, t; if (lo < hi) { l = lo; h = hi; p = a[hi]; do { while ((l < h) && (a[l] <= p)) l = l+1; while ((h > l) && (a[h] >= p)) h = h-1; if (l < h) { t = a[l]; a[l] = a[h]; a[h] = t; } } while (l < h); t = a[l]; a[l] = a[hi]; a[hi] = t; qsort( a, lo, l-1 ); qsort( a, l+1, hi ); } }
参考
http://www.haskell.org/