[Haskell-cafe] Why Not Haskell?

Brian Hulley brianh at metamilk.com
Fri Aug 4 14:34:34 EDT 2006


Hans van Thiel wrote:
> Hello All,
>
> I'm wondering why I can't find any commercial Haskell applications on
> the Internet. Is there any reason for this?

I'm actually working on a Haskell program which I hope to release as a 
commercial application. The biggest problem I'm encountering is the lack of 
a really solid collections library that's as well thought out as C++ STL 
because although there are several competing collections libraries, each 
allowing fast development of powerful code, they all have various faults and 
limitations and I hate the idea of my code resting on half-baked 
foundations. I'm also a rabid perfectionist (and extremely fussy with regard 
to code aesthetics) when it comes to these kind of things so perhaps it's my 
fault.

Perhaps it's also because Haskell raises your expectations regarding what a 
good program should be like, so it's easy to get lost in abstraction. Eg 
last week all I needed was an equivalent of the C++ std::vector but I've 
wasted the whole of this week trying to create the perfect factoring of 
collection classes to try and avoid having concrete types everywhere and to 
be a foundation for all the uses of collection types in my program, and now 
I'm totally lost in a miasma of undecidable instances and difficult 
decisions.

> I can think of the following possibilities only:
> 1) Haskell is too slow for practical use, but the benchmarks I found
> appear to contradict this.

I think it's fast enough. There's also a very good foreign function 
interface if you need to get the full speed of C for some inner loop. And a 
bonus is that as more and more people use it, it's likely that more effort 
will be done to make it faster.

> 2) Input and output are not good enough, in particular for graphical
> user interfacing and/or data base interaction. But it seems there are
> several user interfaces and SQL and other data base interfaces for
> Haskell, even though the tutorials don't seem to cover this.

You just need to check the licences for the various bindings and also the 
licences for the C libs they're bound to so you don't end up with a GPL 
infested program. WxWidgets uses LGPL with the linking exception so it 
should be 100% safe and easy to use 
(http://wxhaskell.sourceforge.net/license.html ). Gtk2Hs uses the LGPL 
according to http://haskell.org/gtk2hs/overview/ but it does not appear to 
admit the linking exception though this is not insurmountable - it just 
means you need to supply an object file of your code along with your exe 
(and if you use Unix there's no trouble at all because the lib is linked 
dynamically iirc)

> 3) Haskell is not scaleable for commercial use. This looks unlikely to
> me, but could this be a factor?

It can be difficult to know how to organise a large program in Haskell if 
you're used to OOP but I don't think there are any limits on scalability per 
se - GHC is itself an example of a very large Haskell program that's widely 
used on many platforms.

> 4) Haskell is open source and licensing restrictions forbid commercial
> applications. I haven't seen any such restrictions, but is this a
> problem for the standard modules?

You can discover the licensing situation by downloading the GHC source (or 
source for whatever distro you're using) and looking in the directories for 
each package. For example the base package uses a BSD-style licence and 
HaXml uses LGPL with the exception to allow static linking.
It would be good if this info was also on the wiki somewhere but if it is I 
can't find it, or if there was a tool to identify or gather together the 
various licenses and create a composite license (eg including the list of 
the names of all contributors who want to be mentioned) to distribute with 
your app (a free lawyer implemented in Haskell together with its own 
self-generated license!!!).

If you're going to release your app on Windows using GHC you'll need to 
prepare an object file to distribute along with your exe to satisfy the 
annoying LGPL linking restriction imposed by the GMP library that's 
currently part of the statically linked runtime, but this shouldn't be an 
obstacle once you've written the appropriate batch file to generate it.

(There's a thread on the ghc users mailing list indicating that GMP might be 
removed from GHC at some point which would make life even easier - see 
http://www.haskell.org/pipermail/glasgow-haskell-users/2006-August/010665.html )

[snip]

> Why hasn't Haskell made it into the business world (yet), after being
> available for 15 years, or is this the wrong question?

This might just be because computers were too slow in the past to run 
programs written in such high level languages as Haskell, so everyone had to 
use low-level languages like C and C++ (people even now still spend 
sleepless nights debating whether or not to use a virtual function in a C++ 
class because of the extra indirection it requires).

Also, the bottom line imho is that Haskell is a difficult language to 
understand, and this is compounded by the apparent cleverness of unreadable 
code like:

     c = (.) . (.)

when a normal person would just write:

     c f g a b = f (g a b)

Anyway good luck! I think anyone who *doesn't* take advantage of very high 
level languages like Haskell is just shooting themselves in the foot... :-)

Regards, Brian.
-- 
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.

http://www.metamilk.com 



More information about the Haskell-Cafe mailing list