blob: 7c29f58333539d0dcba917f22b5e2f8e7cab349b (
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
|
(;module:
lux
(lux (control functor
comonad)))
(type: #export (Env e a)
{#env e
#value a})
(struct: #export Functor<Env> (All [e] (Functor (Env e)))
(def: (map f fa)
(update@ #value f fa)))
(struct: #export CoMonad<Env> (All [e] (CoMonad (Env e)))
(def: functor Functor<Env>)
(def: unwrap (get@ #value))
(def: (split wa)
(set@ #value wa wa)))
(def: #export (local change env)
(All [e a] (-> (-> e e) (Env e a) (Env e a)))
(update@ #env change env))
|