From recent SVN commit messages, I see that there has been some
reorganization of structure/signature matching; apologies if the reorganization is incomplete (i.e., not ready for testing) and/or the following is a known issue.
This program type checks under PolyML 5.2.1 (and SML/NJ 110.68 and MLton 20070826), but reports type errors under PolyML SVN HEAD.
===== signature UNIQUE_SET_STRUCTS = sig structure Element: sig type t end end signature UNIQUE_SET = sig include UNIQUE_SET_STRUCTS type t val toList: t -> Element.t list end structure UniqueSetRep = struct datatype 'a t = T of {elements: 'a list} end functor UniqueSet (S: UNIQUE_SET_STRUCTS): UNIQUE_SET = struct open S type elements = Element.t list structure Tree: sig structure Set: sig type t val toList: t -> elements end end = struct structure Set = struct open UniqueSetRep type t = Element.t t fun new elements = T {elements = elements} fun elements (T {elements, ...}) = elements val toList = elements end end open Tree.Set end =====