[Haskell-cafe] Non-recursive let [Was: GHC bug? Let with guards loops]

J. Stutterheim j.stutterheim at me.com
Sat Jul 13 13:27:35 CEST 2013

I currently work at the Radboud University where Clean is being developed. As such, I use it daily. Coming from Haskell, I have to admit that I never really got used to the let-before syntax, exactly for the reasons described in the previous emails. However, it does have some merit. In combination with uniqueness typing, the compiler can do destructive updates on the variables in the let-before blocks, making the generated code more efficient.

Possibly a bit off-topic, but please allow me to give an update about the latest status of Clean (mixed with some personal opinion ;)

> Clean is relatively unknown because
> - they started in the Macintosh world, and when
>   they provided a compiler for the Unix world,
>   they did not port their "modern" graphics and
>   I/O library to it.  So you could never write
>   a program that would run on Macs and other things.

Object IO (the graphics library) will probably never work for systems other than Windows because f low priority and a lack of manpower. This is admittedly unfortunate if you want to write native client-side GUIs. Currently, most of Clean's progress is driven by the iTask System[1], which provides a web GUI.

> - they then abandoned the Macintosh world for
>   Windows.  The Mac IDE was killed off; there is
>   now an IDE for Windows but not MacOS or Linux.

The good news is that the latest version of Clean[2] and its code generator[3] now works fine again on 64 bit Mac OS X (I would rate it as advanced beta, or perhaps even RC quality). Linux 64 support is currently being stabilised (currently alpha quality). Hopefully we will be able to create a new Clean release for Mac OS X, Linux and Windows this year. It will then also contain a command-line based build tool for Clean IDE project files.

> - other major features remain Windows-only

The bad news is that this is true to some extend; the dynamics system is still largely Windows-only. However, this is the only language feature I can think of that really is Windows-only.

> - the change from Clean 1.3 to Clean 2 was huge,
>   like I mentioned above, none of my code survived
>   the change, and there was at that time no
>   conversion program

Warning, personal opinion ahead: that's the price of progress I suppose :) Because Clean has a very small user base, the language itself is still evolving, and there is no release schedule of any kind, it doesn't really pay to have a complicated deprecation process.

> - the available books about Clean are way out of
>   date, several drafts of other books remain
>   incomplete.
> - the documentation (like the Report) has always been
>   rather amateurish and incomplete.  Certainly
>   compared with the Haskell documentation.

An iTasks book is actually in the works, which will contain a fair bit of Clean (although it is not a dedicated Clean book). There are also concrete plans to update the language manual soon-ish.

> - there is nothing to compare with the Haskell Platform.

Actually, yes there is[4]. It can be described as a mix between Haskell Platform and a mini Hackage-like repository. There is no such thing as a Clean alternative to cabal install, though.

Keep in mind that there is only a handful of people working on Clean, while Haskell has a huge community in comparison. This makes it hard to keep up with advanced language features.

- Jurriën

[1] http://wiki.clean.cs.ru.nl/ITasks
[2] https://svn.cs.ru.nl/cgi-bin/admin/info/clean-compiler
[3] https://svn.cs.ru.nl/cgi-bin/admin/info/clean-code-generator
[4] https://svn.cs.ru.nl/cgi-bin/admin/info/clean-platform

More information about the Haskell-Cafe mailing list