[Ur] Mutually recursive values

Gabriel Riba gabriel at xarxaire.com
Thu Jul 9 11:00:55 EDT 2015


El 09/07/15 a les 16:51, Gabriel Riba ha escrit:
> Trying to use mutually recursive values don't compile, giving the error:
>
> syntax error: replacing  AND with  UNDER
> Parse failure
> ----------
>
> Here is a sample to try with:
>
>    val rec even (i:int) = if i = 0 then True
>                         else if i > 0 then odd (i -1)
>                         else error <xml>error: negative input</xml>
>
>    and val rec odd (i:int) = if i = 0 then False
>                            else if i > 0 then even (i -1)
>                            else error <xml>error: negative input</xml>
>

I am sorry, I see it was my fault, as the syntax is defined in the 
manual as

val rec (id : type = expr "and")+


I should have written:

     val rec even (i:int) = if i = 0 then True
                          else if i > 0 then odd (i -1)
                          else error <xml>error: negative input</xml>

     and odd (i:int) = if i = 0 then False
                             else if i > 0 then even (i -1)
                             else error <xml>error: negative input</xml>





More information about the Ur mailing list