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