blob: 13422021506377f262ed70c7324489fe64251903 (
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 #*
[control ["F" functor]
comonad]])
(type: #export (Env e a)
{#env e
#value a})
(structure: #export Functor<Env> (All [e] (F.Functor (Env e)))
(def: (map f fa)
(update@ #value f fa)))
(structure: #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))
|