Uniqueness annotations

Rolf-Thomas Happe rthappe@mathematik.uni-freiburg.de
Tue, 2 Mar 1999 12:47:00 +0100 (MET)


> but if I understand what you're saying, _each_ occurrence of an
> unqualified type variable gets a _different_ type variable, so that
> it's really like
> 
>     next_random_list :: !(!RNG_State -> *(u:b, RNG_State)
>                         ) !Int !RNG_State -> *(*[v:b], RNG_State)
> 
> That would explain it.  Thanks.  That does mean that I'm going to
> need a lot of uniqueness variables I thought I could do without.

My non-authoritative understanding is that clm does the best it can
for the stuff local to a module, but that you have to make the uniqueness
attributes explicit in the dcl file in order to export this information,
as in

      next_random_list :: !(!RNG_State -> *(.b, RNG_State)
                          ) !Int !RNG_State -> *(*[.b], RNG_State)

rthappe