Due 1/18/05.
Due 1/27/05.
Due 2/10/05.
t = ref t1 in the proof of 13.5.3.\empty | \Sigma |- t : Ref T in the proof of 13.5.7.Due 2/24/05.
Due 3/10/05.
M :> I.
Standard ML also supports this opaque ascription (with the same
notation), but it also has transparent
ascription with the notation M : I.
The difference is illustrated by the following example.
I = sig type t
val x : t
end
M = struct
type t = int
val x : t = 0
end
M1 = M : I
M2 = M :> I
M1.t == int
M1.x : int
M2.t is abstract
M2.x : M2.t
Describe a procedure for type checking an ascription of the form
M : I, and discuss how the procedure
differs from that for checking M :>
I.
dictFun
(e.g. representing dictionaries as association
lists -- lists of key-value pairs).