[Haskell-cafe] Re: How does one get off haskell?

wren ng thornton wren at freegeek.org
Fri Jun 18 08:48:58 EDT 2010


Edward Z. Yang wrote:
> Excerpts from Paul Lotti's message of Thu Jun 17 15:33:30 -0400 2010:
>> Same feelings here.  I work in a company that uses C++/Java and the best I could
>> manage was to use Haskell for prototyping and then deliver in Java.  This worked
>> out twice so far.  The downside is having to translate it later. 
> 
> *Shudders at the though.* Must be a what, x10 size blow-up?

I've done that too. It works fairly well for certain kinds of 
programs/problems, but you have to be careful about your abstractions.

For instance, Java Generics are no substitute for real parametric 
polymorphism. They only work for the simplest kind of container/element 
polymorphism, interact poorly (i.e., not at all) with subclassing, and 
explode with many of the higher-order tricks common in idiomatic 
Haskell. Any sort of higher-order programming (HOFs, point-free style, 
CPS, parametricity,...) rarely translates well--- especially if you want 
to avoid code bloat and have anything resembling idiomatic Java. Though 
sometimes defunctionalization[1] can help.

The code blow up varies. 10x is on the good side of things and indicates 
a good match of abstractions. 20x or 30x is more common I think. But if 
you're relying on any libraries or fancy datastructures, you'll be lucky 
not to have to reimplement everything...


[1]
http://blog.plover.com/prog/defunctionalization.html
http://www.brics.dk/RS/01/23/
http://cristal.inria.fr/~fpottier/publis/fpottier-gauthier-popl04.pdf

-- 
Live well,
~wren


More information about the Haskell-Cafe mailing list