[MLton] signature language lacking
Henry Cejtin
henry.cejtin at sbcglobal.net
Tue Feb 12 20:47:46 PST 2008
Consider the following piece of SML code:
structure S:> sig
type at
type bt
structure A: sig
type t = at
val f: at -> bt
end
structure B: sig
type t = bt
val f: bt -> at
end
end = struct
???
insert some code that implements the above here
???
end
structure S: sig
structure A: sig
type t = S.at
val f: S.at -> S.bt
end
structure B: sig
type t = S.bt
val f: S.bt -> S.at
end
end = S
Unless I am confused, the result is a structure S which has nothing in it but
two sub-structures. Each of these two sub-structures has only a single type
and a single function in it. The two types are completely opaque except that
the two functions map between them.
My question is: is there any way to specify a signature such that opaque
matching to that signature would express exactly this? I can't think of any
way to do this, and that means that the signature language is too weak to
specify an interface to this structure, which is very disappointing. (Not
that the signature language wasn't known to have short comings already.)
Am I missing something?
More information about the MLton
mailing list