Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: Why is this not allowed?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: John Prevost <prevost@m...>
Subject: Re: Why is this not allowed?
Damien Doligez <Damien.Doligez@inria.fr> writes:

> ># let rec id'' = id;;
> >This kind of expression is not allowed as right-hand side of `let rec'
> 
> Because we don't know how to compile "let rec x = x" or
>   let rec x = y
>   and y = x
> 
> Moreover, you can just remove the "rec" and it works.  It is possible
> to implement "let rec var1 = var2", but the usefulness is quite small
> compared to the amount of code we would need to write.

Well, you can't quite.  Because of the value restriction, id'' defined
like this:

let id'' = id;;

has type:

id'' : '_a -> '_a

(That is, it'll only work for a single type.)

John.