blob: c8a9a951f31b4ed0b4091eeb20330bcb218d390d (
plain) (
blame)
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
|
# MIT License, Copyright (c) 2022 Marvin Borner
:import std/Combinator .
# empty option
none T
# encapsulates value in option
some [[[0 2]]]
# checks whether option is none
none? [0 T [F]]
:test (none? none) (T)
:test (none? (some [[0]])) (F)
# checks whether option is some
some? [0 F [T]]
:test (some? none) (F)
:test (some? (some [[0]])) (T)
# applies a function to the value in option
map [[0 none [some (2 0)]]]
:test (map [[1]] (some [[0]])) (some [[[0]]])
:test (map [[1]] none) (none)
# applies a function to the value in option or returns first arg if none
map-or [[[0 2 1]]]
:test (map-or [[[2]]] [[1]] (some [[0]])) ([[[0]]])
:test (map-or [[[2]]] [[1]] none) ([[[2]]])
# extracts value from option or returns first argument if none
unwrap-or [[0 1 I]]
:test (unwrap-or F (some T)) (T)
:test (unwrap-or F none) (F)
# applies encapsulated value to given function
apply [[1 none 0]]
:test (apply none [some ([[1]] 0)]) (none)
:test (apply (some [[0]]) [some ([[1]] 0)]) (some [[[0]]])
|