1 (* Copyright (C) 1999-2006, 2008 Henry Cejtin, Matthew Fluet, Suresh
2 * Jagannathan, and Stephen Weeks.
4 * MLton is released under a BSD-style license.
5 * See the file MLton-LICENSE for details.
8 functor MakeMonoEnv(S: sig
19 val empty: t = empty()
21 val equals = equals Range.equals
23 val layout = layout Range.layout
27 (* THIS ISN'T HERE BECAUSE (no surprise) there is an NJ BUG
29 functor MonoEnv(S: MONO_ENV_STRUCTS): MONO_ENV =
30 MakeMonoEnv(structure Env = Env(S)
31 structure Range = S.Range)
34 functor MonoEnv(S: MONO_ENV_STRUCTS): MONO_ENV =
38 datatype t = T of (Domain.t * Range.t) List.t
44 fun equalTo d (d', _) = Domain.equals(d, d')
46 fun extend(T drs, d, r) =
47 T(List.cons((d, r), List.remove(drs, equalTo d)))
50 case List.peek(l, equalTo d) of
52 | SOME (_, r) => SOME r