view tests/functor.lac @ 43:d94c484337d0

Subtyping for functor signatures
author Adam Chlipala <adamc@hcoop.net>
date Thu, 19 Jun 2008 16:43:24 -0400
parents b3fbbc6cb1e5
children a9f3ce2d1b9b
line wrap: on
line source
signature S = sig
        type t
        val z : t
        val s : t -> t
end

signature T = sig
        type t
        val three : t
end

functor F (M : S) : T where type t = M.t = struct
        type t = M.t
        val three = M.s (M.s (M.s M.z))
end

structure F2 : functor (M : S) : T where type t = M.t = F
structure F3 : functor (M : S) : T = F
(*structure F4 : functor (M : S) : sig type q end = F*)
(*structure F5 : functor (M : S) : T where type t = int = F*)