41 lines
884 B
Plaintext
41 lines
884 B
Plaintext
|
(local {: pprint} (require :lib.tableprint))
|
||
|
|
||
|
(let [{
|
||
|
: Either
|
||
|
: Left
|
||
|
: Right
|
||
|
} (require :lib.either)]
|
||
|
|
||
|
;; either
|
||
|
;(print "Either Inspection")
|
||
|
;(pprint Either)
|
||
|
|
||
|
;; you can set and get values
|
||
|
(let [ v :poop x (Either:new v)]
|
||
|
(assert (= v x.value) (.. "The value is " v)))
|
||
|
|
||
|
(let [r (Right:new "rain")
|
||
|
map (r:map #(.. "b" $1))
|
||
|
expected :brain
|
||
|
actual (. map :value)
|
||
|
]
|
||
|
(assert (= expected actual) "You can map a Right value"))
|
||
|
|
||
|
(let [l (Left:new "rain")
|
||
|
map (l:map #(.. "b" $1))
|
||
|
expected :rain
|
||
|
actual (. map :value)
|
||
|
]
|
||
|
(assert (= expected actual) "You can NOT map a Left value"))
|
||
|
|
||
|
(let [e (Either.of "rank")
|
||
|
map (e:map #(.. "f" $1))
|
||
|
expected :frank
|
||
|
actual (. map :value)
|
||
|
]
|
||
|
(assert (= expected actual) "You can map a Either.of"))
|
||
|
|
||
|
|
||
|
|
||
|
)
|