CLAS

Richard A. O'Keefe ok@atlas.otago.ac.nz
Fri, 5 Mar 1999 12:00:23 +1300 (NZDT)


There are a number of typos in the clas.html file:
"qubic" should be "cubic"
"infered" should be "inferred"
"swapes" should be "swaps"
"unifies" should be "uniquifies" (ugh)
Probably others that I missed on a quick scan.

More importantly, this package suggests two principles that should guide
future releases of this and other Clean packages.

1.  The distribution should include the documentation.
    I did save the clas.html file, _but_ it refers to a bunch of .gif
    and other files, so that to view the documentation I _have_ to do
    remote accesses which the department is billed for.  How much
    better if _all_ the files I needed for documentation were there
    right in the .tag.gz or .zip file!

2.  Because Clean is a layout-sensitive language,
    DISTRIBUTED CLEAN SOURCES SHOULD NEVER *EVER* CONTAIN TABS.

    I would like to be able to use the *same* source files on my Unix
    systems (where tabs are by default and for all practical purposes
    immutably set to 8) and on my and my students Mac boxes (where
    tabs are whatever Clean wants them to be, is it 3 or 4?).

    Ok, so on a Unix box it is easy enough to do

	for F in *.?cl ; do
	    mv $F $F.BAK
	    pr -t -e4 $F.BAK >$F
	done

    but it's even easier if the original developer makes sure there are
    no tabs in the first place so that NOBODY has to do this.  I was
    lucky this time, guessing -e4 seems to have worked.  But why should
    I have to guess?

For what it's worth, I have suggested to the Clean team before that
allowing special header comments like
    //charset=iso-latin-1 tabs=4
would help a lot.  (Once again, on a UNIX box I have tools to let me
convert from pretty well anything to pretty well anything else, but
it would be a lot easier if I didn't have to guess what the original
character set was.)  Well, they have other things to worry about, so
perhaps someone else will have to do it.  It'd be awfully handy for
moving Haskell files around too.

Portability of sources and documentation matters a lot to me because
I develop examples on UNIX and MacOS, for students who will be using
them on MacOS, Windows, and Linux.  (I also try to write most of my
examples in Clean, Haskell, and SML.  Makes life interesting.  I've
no intention of asking the Clean team to make their compiler support
any other languages!)