Go rant

Walter Bright newshound1 at digitalmars.com
Fri Dec 18 11:39:08 PST 2009


retard wrote:
> I've only seen how Scala solves problems elegantly. These are from some 
> biased blog posts etc. Can you show one example that looks uglier in 
> Scala, but looks decent in D or some other language?

Many languages offer "show" examples that look elegant. A classic 
example is the one line Haskell quick sort:

qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

prominently featured in Haskell's official introduction page:
http://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell

Ain't that cool? But look closer. The advantage of quicksort is that it 
is an *in-place* sort. The Haskell one creates new arrays for every 
state in the sort. The other fundamental problem with the Haskell 
version is that it selects the first array element as the "pivot". This 
is the worst choice, since arrays to be sorted tend to already be mostly 
sorted, and quicksort gives quadratic performance to sort an already 
sorted array with the first element as the pivot.

Ironically, the quicksort example shows a serious weakness of functional 
programming, not an elegant strength.



More information about the Digitalmars-d mailing list