Craig is in bold.
Andrew is in plain text.
Hi
I've just spent the last hour or so going over your excellent
"Introduction to ML". You asked for comments so here you go :
- * On CAL:
- I absolutely agree with you except you assume that students
have access to teachers with minimal teaching or social skills.
Some students do not, so CAL would be welcome in this case.
It must be admitted that anecdotal evidence suggests that
functional programmers do seem to include a disproportionate number
of the misshappen - both physically & mentally. I know of no study
which explains or even documents this, I am just glad I was spared.
- * On the manual in general:
- Your intro was very well written. Our assigned course text
(Abstract Data Types in Standard ML - Harrison) skips over the basics
entirely, leaving most of us (who have never used a functional
programming language) stumped.
I was actually taught by Ms. Harrison at Imperial College. She was
a very good lecturer - but I do not like her book "Abstract Data Types
in Standard ML" much.
- * More More More !!!
- Unfortunately your manual succeeded mostly in just clarifying things
that I had figured out by trial and error (or knew from LISP). I have
include a list of things that I hoped would be included in your intro.
But alas an intro is an intro. Could you possibly guide me to any good
documentation that describes any of these things. Hopefully it will even
be as well written and -learnable- as your manual.
- the number following an "infix statement" (i.e. infixr 5 ++)
The number refers to the tightness binding the operator. For example
* (times) binds tighter than + (addition) which is why the expression
2*3+4*5 is evaluated as (2*3)+(4*5) rather than ((2*3)+4)*5 or any other
combination.
infix 7 * div mod quot rem
infix 6 + -
infix 4 > < >= <=
The r in infixr indicates that it associates to the right. For
example :: associates to the right as 1::2::nil is 1::(2::nil) but -
associates to the left as 10-4-2 is (10-4)-2.
- the abstype command and constructing our own abstract data types
I refer you to Åke Wikström's "Functional Programming Using Standard ML"
which is very good at this kind of thing.
- constructors, functors, structures etc.
Constructors are the "tags" in datatype statements node and
leaf in the Trees example are examples of constructor.
"Programming with Standard ML" by Myers Clack & Poon give details of
all of these. I would be tempted to find some code that uses them & work
it out by example.
- what exactly is a signature
A signature may be used to constrain the types of the things in a
structure (see M,C & P). Sometimes I refer to the the signature
of a function in which case I mean the type.
- a basic intro to eXene or any other GUI support for SML
Sorry I can't help here. I once started to look at eXene but soon
gave up. I am currently messing with cgi & html & sml.
Thank you very much
Craig Salter