What Programming Languages Should You Learn Next?
Paul Rubin
http
Fri Mar 21 00:19:05 EDT 2008
"Terry Reedy" <tjreedy at udel.edu> writes:
> What would be amazing would be a algorithm that could rewrite the
> external-arrays Haskell/Python code to the equivalent of the in-place C
> code.
I don't think JHC (a fancy optimizing Haskell compiler) goes quite
that far, but it compiles Haskell to C code that looks pretty much
the same as imperative code that a careful programmer would write.
> Can one even write such an equivalent in Haskell? (If it is purely
> functional, then no, though one obviously can in Python.)
Yes, you can write in an imperative styld while staying purely
functional. The trick is to notice that
b = f(a)
c = g(b)
d = h(c)
...
requires evaluating f,g,h in exactly that order. So you can
write sequential code as a bunch of nested function calls that
the compiler optimizes away. Haskell has syntactic support
for this, so the code you'd write looks somewhat C-like:
do {
b <- f a;
c <- g b;
d <- h c
}
but it is actually even cooler than that (complicated to explain so I
won't try here). The result is that you really insist, you can code
an imperative quicksort that looks about the same as the C one and
compiles to about the same machine code, but is fully typesafe and
polymorphic.
More information about the Python-list
mailing list