Backport from sid to buster
[hcoop/debian/mlton.git] / lib / mlton / env / splay-env.fun
1 (* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
2 * Jagannathan, and Stephen Weeks.
3 *
4 * MLton is released under a BSD-style license.
5 * See the file MLton-LICENSE for details.
6 *)
7
8 signature ORDER_ENV_STRUCTS =
9 sig
10 structure Domain: ORDER
11 structure Range: T
12 end
13
14
15 functor SplayMonoEnv(S:ORDER_ENV_STRUCTS): MONO_ENV =
16 BasicEnvToEnv
17 (open S
18
19 structure E = SplayMapFn(type ord_key = Domain.t
20 val compare = Domain.compare)
21
22 type t = Range.t E.map
23 fun extend(env, d, r) = E.insert(env, d, r)
24 fun fromList l = List.fold(l, E.empty, fn ((d, r), env) =>
25 extend(env, d, r))
26 val toList = E.listItemsi
27 val peek = E.find)