Source file fn.ml
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
open! Import
let const c _ = c
external ignore : (_[@local_opt]) -> unit = "%ignore"
let non f x = not (f x)
let forever f =
let rec forever () =
f ();
forever ()
in
try forever () with
| e -> e
;;
external id : ('a[@local_opt]) -> ('a[@local_opt]) = "%identity"
external ( |> ) : 'a -> (('a -> 'b)[@local_opt]) -> 'b = "%revapply"
let compose f g x = f (g x)
let flip f x y = f y x
let rec apply_n_times ~n f x = if n <= 0 then x else apply_n_times ~n:(n - 1) f (f x)