adamc@146: signature S = sig adamc@146: type t adamc@146: val x : t adamc@146: end adamc@146: adamc@146: functor F (M : S) : S where type t = M.t = struct adamc@146: type t = M.t adamc@146: val x = M.x adamc@146: end adamc@146: adamc@146: structure M = F(struct adamc@146: type t = int adamc@146: val x = 0 adamc@146: end) adamc@146: adamc@146: open M