blob: 59eac6c3317515a21dec429f0515dc34faeca4a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
exception Empty_list
let fold fn = function
| [] -> raise Empty_list
| head :: tail -> List.fold_left fn head tail
let list_min ls = fold Stdlib.min ls
let list_max ls = fold Stdlib.max ls
let rec repeat n a = if n <= 0 then [] else a :: repeat (n - 1) a
let empty ls = ls = []
let rec zip l1 l2 =
match (l1, l2) with
| [], _ -> []
| _, [] -> []
| h1 :: t1, h2 :: t2 -> (h1, h2) :: zip t1 t2
let rec transpose = function
| [] :: _ -> []
| ls -> List.(map hd ls) :: transpose List.(map tl ls)
let flip f a b = f b a
let rot_right ls = List.(rev ls |> transpose)
let rot_left ls = List.(transpose ls |> rev)
let saturating_sub b a = if a < b then 0 else a - b
let to_string c = String.make 1 c
let space = to_string ' '
let axis = "┬"
let axis_spc = "─"
|