Simon Peyton-Jones writes:
 > It's hard to make two independently-developed systems 100% compatible.
 > For example, it would make it difficult for either GHC or Hugs to offer
 > some feature or improvement without ensuring that the other system did too.
 > 
 > However, your point is a good one.  What's missing is a clearer 
 > story about what incompatibilities actually "bite".  Probably 
 > some things don't matter, but others do, a lot.
 > 
 > That's what the new Wish List is for
 >      http://marutea.pms.informatik.uni-muenchen.de/wishlist/
 > 
 > Pls tell us what the incompatibilites that hurt you are.

Well, I haven't looked at hugs recently, so I can't make an accurate assessment
of the current situation. The incompatibilities I remember from ~ 1 year ago are:

* MPTCs were out on a branch, not in the main trunk of hugs.

* There used to be lack of functionality (wrt ghc) on the hugs side, regarding
stateful things e.g. arrays. As a former imperative programmer I used to be very 
fond of efficient arrays; although it's worn off a lot, I still like them to be 
available. IIRC, hugs now has mutable arrays in a special array library that is
supposed to be compatible with ghc. But I suspect it doesn't have unboxed and
byte arrays.

* Does hugs have unboxed types ? Probably not. In many real programs these are
likely to come into play. It would be fine if hugs just pretended to have them,
since one doesn't use hugs for speed anyway.

* stToIO . This is often necessary for programs that do stateful things as well
as IO. A few years ago, having read all relevant papers, I was very perplexed by
the problem of doing stateful things and IO at the same time. Eventually I
realised it is not possible to nest monads, and nearly despaired before
noticing that, in ghc, IO = ST RealWorld . I wrote my own stTOio, and ghc grew
one later (IIRC). But I don't remember hugs having stIoIO, nor the above
equality holding. I think hugs used to have some mutable things that lived in
IO, not ST, which is probably how hugs users got by.

* Hugs doesn't have the Posix library (this is already on the wishlist). It's a
pity because un*x shell-scripting could be an excellent application area for
hugs. I believe a Posix-equipped (a regexp library would be good too) Hugs
would wipe the floor with Perl, not to mention the even-worse conventional
scripting languages.

I've often wondered what happened to the Glasgow haskell interpreter (I forget
its name). I think it had rotted before I discovered it. Why is hugs written
in C, when ghc is mostly written in haskell ?

The stToIO example suggests to me that it will take a while to get good
compatibility.

When I get around to looking at Hugs again, I'll remember to add my gripes to
the wishlist.

Tim


Reply via email to