Another good exam question (Hmm!):
What does last (last (map return [1..])) lastly return given that
last (return (not True))?
I also would prefer "unit". "return" makes sense for me as syntactic
sugar in the context of a "do"-expression (and then please like an
unary prefix-operat or with low binding power...).
An alternative sugary would be "compute": When a monad represents
a computation, "init" returns a computation with a result, not
just the result:
foo x = if x > 0 then compute x*x else compute -x*x
By the way, an alternative for "do" would be "seq" (as in occam) to
indicate that operations are sequenced:
getLine = seq
c <- readChar
if c == '\n'
then compute ""
else seq
l <- getLine
compute c:l
But such a discussion has probably already been taken place some years
ago. It would be interesting for me to know the arguments that led to
the choice of "return" (and "do").
Elke.
---
"If you have nothing to say, don't do it here..."
Elke Kasimir
Skalitzer Str. 79
10997 Berlin (Germany)
fon: +49 (030) 612 852 16
mail: elke.kasimir@catmint.de>
see: <http://www.catmint.de/elke>
for pgp public key see:
<http://www.catmint.de/elke/pgp_signature.html>