-
alba.albalib
-
-
alba.core
-
-
alba.fmlib
-
Library
Module
Module type
Parameter
Class
Class type
A thin wrapper around Stdlib.List
which avoids throwing exceptions and with some additional monadic functions.
List Monad
val return : 'a -> 'a t
return a
makes a singleton list with the element a
.
l >>= f
applies the function f
to all elements of the list l
and concatenates all lists.
f >=> g
composes the two monadic functions f
and g
.
flst <*> lst
is equivalent to flst >>= fun f -> map f lst
i.e. it maps all functions contained in flst
over the list lst
and then concatenates the results.
join
is the same as concat
.
Modified list functions
val find : ('a -> bool) -> 'a t -> 'a option
find p l
finds an element e
in the list l
which satisfies p e
.
Split the list in its head and tail parts. Requires that the list is not empty.
val head_strict : 'a t -> 'a
Get the head of the list. Requires that the list is not empty.
val nth_strict : int -> 'a t -> 'a
ith_strict n list
returns the n
th element of the list. Precondition: list
has at least n + 1
elements.
val nth : int -> 'a t -> 'a option
ith_strict n list
returns the n
th element of the list if the list is long enough. Otherwise None
is returned.
List functions from Stdlib
append a b
prepends the lists a
in front of the list b
. Synonym a @
b
.
concat ll
concatenates all lists contained in the list of lists ll
.
rev_append a b
prepends the lists rev a
in front of the list b
.
val length : 'a t -> int
Additional list functions
map_and_filter f list
maps the list with f
and removes the element for which f e = None
.
split_at p lst
scans the list until it finds the first element satisfying p
and returns the prefix and the remainder starting at the encountered element.
transpose list_of_rows
returns the list of columns.
Preconditions:
- The list of rows must not be empty.
- All rows in the list of rows must not be empty and have the same length.
Example:
transpose [ [1; 2; 3]; [4; 5; 6] ]
=
[ [1; 4]; [2; 5]; [3; 6] ]
Monadic list functions
module Monadic (M : Module_types.MONAD) : sig ... end
Monadic list functions