Gergely Buday wrote:
I have the following error message for the following code. The problem
is with the M.fieldName. Is it not allowed to use a long identifier
for a field name in functor signature? The functor implementation is
clearly wrong, that is just to have a full functor definition.
I hadn't documented a limitation in the parser, affecting how field
names within record literals may be written. I just added a note about
that. In particular, projections from modules are not allowed. (I
can't figure out how to make ml-yacc accept such terms without breaking
parsing of other forms.)
Here is a (not entirely satisfactory, but not crazy either) "fix" that
gets your code to parse:
functor DummyF (M : sig
con fieldName :: Name
end) :
sig
con fieldName = M.fieldName
val foo : {} -> $(mapU {fieldName : int} roles)
end = struct
con fieldName = _
fun foo () = 2
end
Or, a version with more up-front cost, but that scales better to mention
of more field names from [M]:
signature S = sig
con fieldName :: Name
end
functor DummyF (M : S) :
sig
include S
val foo : {} -> $(mapU {fieldName : int} roles)
end = struct
open M
fun foo () = 2
end
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur