很有意思的函数型语言Haskell

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

你可能感兴趣的:(数据结构与算法)