[Haskell] Haskell in industry?

Vincenzo aka Nick Name vincenzo_mlRE.MOVE at yahoo.it
Tue Sep 14 19:25:29 EDT 2004


On Tuesday 14 September 2004 18:18, Heribert.Schuetz.extern at HVB.de 
wrote:
> *       Can't much of the simplicity of the Haskell code also be
> reached by just switching from C++ to something like Java or C#?
> (Probably an example from the application domain will be most
> convincing. So I probably have to bite the bullet and reimplement
> some code in Java or C#. But if you have some examples, they might be
> helpful.

I don't have examples but I've been working with C# 8 hours per day for 
6 months and I ensure you that no, they are not simple. C++ is simpler 
for enterprise uses than C#, IMHO, because you fundamentally reuse 
other people libraries and so worry _less_ about memory management than 
you'd expect, but YMMV. On the other hand, C# has NO parametric 
polymorphism and after a while I've begun to miss C++ templates. C# has 
functional programming, they say, but no you can't use a method name as 
a function. You first have to create an "event". Composing this with 
the absence of parametric polymorphism and type inference, here's what 
a _monomorphic_ "map" function looks like, with a possibly naive syntax 
because I don't have the compiler handy (and worked 8 hours today,too).

/////
public delegate int myDelegate(int i); //This is a type declaration

public ArrayList map(myDelegate fn,ArrayList list); 
// Note that the list is untyped, but the function is strongly typed.
{
   ArrayList result = new ArrayList();

   foreach (Object obj in list)
   {
      result.Add(fn(obj));
   }

   return result;
}
/////


6 rows of effective code, untyped, contrived and poorly reusable.

And this is the way you call it (you already know, ok, but now I am 
having fun :))

public int increment(int i)
{
  return i+1;
}

map(new myDelegate(increment),myList); // note the call to "new"

The map function from the haskell prelude:

map f xs = [f x | x <- xs]

and how you call it:

map (\ x -> x+1) myList

It's strongly typed, polymorphic and reusable. And it's far more 
readable and clear in intent, too.

Do I need to say more? If you have the possibility to use haskell, ocaml 
or SML at work, do so :) 

OK, I realize that you already knew haskell, but you asked first :)

Vincenzo


More information about the Haskell mailing list