Import Upstream version 20180207
[hcoop/debian/mlton.git] / lib / mlton / basic / env.sig
CommitLineData
7f918cf1
CE
1(* Copyright (C) 2009 Matthew Fluet.
2 * Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
3 * Jagannathan, and Stephen Weeks.
4 *
5 * MLton is released under a BSD-style license.
6 * See the file MLton-LICENSE for details.
7 *)
8
9signature ENV_STRUCTS =
10 sig
11 structure Domain: T
12 end
13
14signature ENV =
15 sig
16 include ENV_STRUCTS
17
18 type 'a t
19
20 val + : 'a t * 'a t -> 'a t
21 val domain: 'a t -> Domain.t list
22 val empty: unit -> 'a t
23 val equals: ('a * 'a -> bool) -> 'a t * 'a t -> bool
24 val extend: 'a t * Domain.t * 'a -> 'a t
25 val fold: 'a t * 'b * ('a * 'b -> 'b) -> 'b
26 val foldi: 'a t * 'b * (Domain.t * 'a * 'b -> 'b) -> 'b
27 val forall: 'a t * ('a -> bool) -> bool
28 val foralli: 'a t * (Domain.t * 'a -> bool) -> bool
29 val foreach: 'a t * ('a -> unit) -> unit
30 val foreachi: 'a t * (Domain.t * 'a -> unit) -> unit
31 val fromList: (Domain.t * 'a) list -> 'a t
32 val isEmpty: 'a t -> bool
33 val layout: ('a -> Layout.t) -> 'a t -> Layout.t
34 val lookup: 'a t * Domain.t -> 'a
35 val map: 'a t * ('a -> 'b) -> 'b t
36 val mapi: 'a t * (Domain.t * 'a -> 'b) -> 'b t
37 val maybeLayout: string * ('a -> Layout.t) -> 'a t -> Layout.t
38 val multiExtend: 'a t * Domain.t list * 'a list -> 'a t
39 val new: Domain.t list * (Domain.t -> 'a) -> 'a t
40 val peek: 'a t * Domain.t -> 'a option
41 val plus: 'a t list -> 'a t
42 val remove: 'a t * Domain.t -> 'a t
43 val restrict: 'a t * Domain.t list -> 'a t
44 val single: Domain.t * 'a -> 'a t
45 val singleton: Domain.t * 'a -> 'a t
46 val size: 'a t -> int
47 val toList: 'a t -> (Domain.t * 'a) list
48 end