最近在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/