[Haskell-cafe] qsort

Peter Verswyvelen bugfact at gmail.com
Sat Aug 15 04:09:28 EDT 2009


I was reading the introduction at
http://www.haskell.org/haskellwiki/Introduction
where the typical Haskell version of qsort is given

qsort [] = []
qsort (x:xs) = qsort
(filter<http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter>
(< x) xs) ++<http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:.>
[x] ++<http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:.>qsort
(filter<http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter>
(>=<http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:&gt;=>x
) xs

which is then compared to the inplace C version, showing off how much
shorter the Haskell version is.

However, the page also has a link to a "semi-direct" translation of the C
version, which then brings the user to all kinds of confusing threads and
texts, like

*"**Unfortunately none of the above "real" quicksorts seems to compile as
given, when copy/pasted into ghci. Can someone fix? The "parallel" quicksort
gave error "unknown package concurrent" when I ran make in
quicksort/gransim. Has anyone got a functioning "real" quicksort that works
on copy/paste? The program below is working very very slowly. It's probably
slowsort... :o)"*
*
*
Furthermore the inplace versions of qsort in Haskell are IMO less readable
than the C version.

I'm not sure but if I would be a beginner I might get confused by this.

It is often claimed that compiler technology will make it possible to
compile high level code into efficient low level code that is almost as
efficient as the C or asm routines. How does this apply to qsort today?

Cheers,
Peter Verswyvelen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090815/a53b661c/attachment.html


More information about the Haskell-Cafe mailing list