Import Upstream version 20180207
[hcoop/debian/mlton.git] / lib / mlton / basic / append-list.sig
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
9 signature APPEND_LIST =
10 sig
11 type 'a t
12
13 val append: 'a t * 'a t -> 'a t
14 val appends: 'a t list -> 'a t
15 val appendsV: 'a t vector -> 'a t
16 val cons: 'a * 'a t -> 'a t
17 val empty: 'a t
18 val fold: 'a t * 'b * ('a * 'b -> 'b) -> 'b
19 val foldr: 'a t * 'b * ('a * 'b -> 'b) -> 'b
20 val foreach: 'a t * ('a -> unit) -> unit
21 val fromList: 'a list -> 'a t
22 val fromVector: 'a vector -> 'a t
23 val layout: ('a -> Layout.t) -> 'a t -> Layout.t
24 val length: 'a t -> int
25 val map: 'a t * ('a -> 'b) -> 'b t
26 val push: 'a t ref * 'a -> unit
27 val single: 'a -> 'a t
28 val snoc: 'a t * 'a -> 'a t
29 val toList: 'a t -> 'a list
30 val toListOnto: 'a t * 'a list -> 'a list
31 val toVector: 'a t -> 'a vector
32 end