Vesa Karvonen wrote:
> - signature FOOBAR = sig include FOO BAR end ;
> 1.35-1.38: unknown structure or functor `BAR'
>
> I didn't see a mention of this on the incompatibilities page.  Is this
> a bug or an intentional feature?  My code uses mutiple include (and
> sharing constraints) in many places for joining signatures
> (relatively) concisely.
>   

You are right, we forgot to list that as an incompatibility.

It is a consequence of a currently undocumented (since only half 
implemented) feature, namely signature constructors, were you could say:

  signature S (I : INTEGER) = sig val x : I.t end
  signature T = sig include S Int31 end

Hey, I probably know somebody who could look into the issue - he's doing 
a thesis on a richer language for signatures at the moment.

> Also, the incompatibilities page doesn't mention any rationale for the
> multiple open incompatibility.  What is the rationale?  Note that it
> is trivial to write multiple open declarations sequentially when one
> wants that effect, but achieving the effect of SML's simultaneous
> multiple open with sequential open is more involved (you'll need extra
> local structure bindings).  I actually have code that makes use of
> SML's simultaneous multiple open for brevity --- a single multiple
> open also hides temporary structure bindings while also opening
> structures, so extra local structure bindings are not needed.
>   

Mh, I remember we were discussing this very issue before, in the context 
of HaMLet-S, isn't that right? :-)

Multiple open/include mixes terrible with higher-order modules and 
signature constructors (where "open F X" naturally means "open (F X)"). 
After quite a while of throwing around different design choices I 
decided to favor a clean solution over an ugly compatibility hack, at 
least for Alice ML (admittedly, I never liked the syntax of multiple 
open/include anyway, probably for the very reason that it represents an 
irregularity that does not scale to such extensions).

In any case, even for plain SML I would recommend to never use the 
parallel-binding ability of multiple "open" - it is a perfect way to 
confuse readers (it is already hard enough to track the bindings 
generated by "open" without it).

- Andreas


_______________________________________________
alice-users mailing list
[email protected]
http://www.ps.uni-sb.de/mailman/listinfo/alice-users

Reply via email to