blob: f26c98a4328fcdbc7f41c7c318d165b42df36a73 (
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
|
(;module:
lux
(lux (control ["M" monad #+ do Monad])
[io]
(data bool)
["R" math/random])
lux/test)
(context: "Boolean operations."
[value R;bool]
(test "" (and (not (and value (not value)))
(or value (not value))
(not (:: Or@Monoid<Bool> unit))
(:: Or@Monoid<Bool> append value (not value))
(:: And@Monoid<Bool> unit)
(not (:: And@Monoid<Bool> append value (not value)))
(:: Eq<Bool> = value (not (not value)))
(not (:: Eq<Bool> = value (not value)))
(not (:: Eq<Bool> = value ((complement id) value)))
(:: Eq<Bool> = value ((complement not) value))
(case (|> value
(:: Codec<Text,Bool> encode)
(:: Codec<Text,Bool> decode))
(#;Right dec-value)
(:: Eq<Bool> = value dec-value)
(#;Left _)
false)
)))
|