1Seq(3) OCaml library Seq(3)
2
3
4
6 Seq - Functional Iterators
7
9 Module Seq
10
12 Module Seq
13 : sig end
14
15
16
17 Functional Iterators
18 The type 'a t is a delayed list, i.e. a list where some evaluation is
19 needed to access the next element. This makes it possible to build
20 infinite sequences, to build sequences as we traverse them, and to
21 transform them in a lazy fashion rather than upfront.
22
23 type 'a t = unit -> 'a node
24
25
26 The type of delayed lists containing elements of type 'a . Note that
27 the concrete list node 'a node is delayed under a closure, not a lazy
28 block, which means it might be recomputed every time we access it.
29
30
31 type 'a node =
32 | Nil
33 | Cons of 'a * 'a t
34 (* A fully-evaluated list node, either empty or containing an element
35 and a delayed tail.
36 *)
37
38
39
40
41
42 val empty : 'a t
43
44 The empty sequence, containing no elements.
45
46
47
48 val return : 'a -> 'a t
49
50 The singleton sequence containing only the given element.
51
52
53
54 val map : ('a -> 'b) -> 'a t -> 'b t
55
56
57 map f seq returns a new sequence whose elements are the elements of seq
58 , transformed by f . This transformation is lazy, it only applies when
59 the result is traversed.
60
61 If seq = [1;2;3] , then map f seq = [f 1; f 2; f 3] .
62
63
64
65 val filter : ('a -> bool) -> 'a t -> 'a t
66
67 Remove from the sequence the elements that do not satisfy the given
68 predicate. This transformation is lazy, it only applies when the
69 result is traversed.
70
71
72
73 val filter_map : ('a -> 'b option) -> 'a t -> 'b t
74
75 Apply the function to every element; if f x = None then x is dropped;
76 if f x = Some y then y is returned. This transformation is lazy, it
77 only applies when the result is traversed.
78
79
80
81 val flat_map : ('a -> 'b t) -> 'a t -> 'b t
82
83 Map each element to a subsequence, then return each element of this
84 sub-sequence in turn. This transformation is lazy, it only applies
85 when the result is traversed.
86
87
88
89 val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
90
91 Traverse the sequence from left to right, combining each element with
92 the accumulator using the given function. The traversal happens imme‐
93 diately and will not terminate on infinite sequences.
94
95 Also see List.fold_left
96
97
98
99
100 val iter : ('a -> unit) -> 'a t -> unit
101
102 Iterate on the sequence, calling the (imperative) function on every
103 element. The traversal happens immediately and will not terminate on
104 infinite sequences.
105
106
107
108
109
110OCamldoc 2020-02-27 Seq(3)