[MLton] confusing error message from MLton
Henry Cejtin
henry@sourcelight.com
Mon, 21 Jun 2004 13:38:16 -0500
I'm confused by why MLton is flagging an error in the following (incorrect)
code on line 14, column 29:
===========================================================================
fun fib x =
if x <= 1
then x
else fib (x - 1) + fib (x - 2)
fun fiba x =
if x <= 1
then x
else fibb (x - 1) + fibb (x - 2)
fun fibb x =
if x <= 1
then x
else fiba (x - 1) + fiba (x - 2)
def doOne arg =
case Int.fromString arg of
SOME arg' =>
(print (arg ^ " => ");
print (Int.toString (fib arg') ^ "\n"))
| _ =>
print ("\"" ^ String.toString arg ^ "\" is not an integer\n")
===========================================================================
The error is
14.29: syntax error: inserting VAL
which certainly confused me. I would have expected first to get the error
about fiba referring to fibb (because the third `fun' should be `and'). Then
I would expect it would have either complained about `def' being unbound or
else about no `fun' before `def'.