该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-13
Suninny 写道 举QSort这个例子显然不够有说服力。
看看这个用Ruby作的,可与Haskell的版本相媲美: def qsort(list) return [] if (x,*xs=*list).empty? less, more = xs.partition{|y| y < x} qsort(less) + [x] + qsort(more) end Block比List Comprehensions好用多了。 我個人比較不認同. List Comprehensions [ y | y <- xs, y < x ] 非常近似數學的 { y | ∀y ∈ xs, y < x } 幾乎是一目了然. 用 partition, you have to know the input parameter ( a block return true/false ) and what returns. In Haskell, of course, you could also use partition without using List Comprehension. (And for me, it seems the Haskell's partition is more "clear" than Ruby's) import List qsort [] = [] qsort (x:xs) = qsort less ++ [x] ++ qsort more where (less, more) = partition (<x) xs |
|
返回顶楼 | |
发表时间:2006-12-13
我觉得这个比较不能说明太多问题.
使用语言内建的某些特性来对比起在一个算法实现上面的简易完全没有可比性,如果去对比性能才有些意义. |
|
返回顶楼 | |