environment.tri (787B)
1 !import base as B 2 !import handlers as H 3 !import io as IO 4 !import io_text as Text 5 !export main 6 -- Lexical application configuration, NOT the OS environment or a sandbox. 7 ask = H.request "configuration" "ask" t 8 reader value "ask" t = H.pure value 9 reader _ operation argument = H.forward "configuration" operation argument 10 line message = H.liftIO (IO.require IO.stdout (writer : 11 IO.require (Text.writeText writer (B.append message "\n")) IO.pure)) 12 inside = do H.bind 13 value <- ask 14 line (B.append "working in env: " value) 15 H.pure "inside-done" 16 main = IO.io (H.runIO (H.handle "configuration" (reader "outer") (do H.bind 17 value <- H.handle "configuration" (reader "demo") inside 18 line (B.append "local returned: " value) 19 outside <- ask 20 line (B.append "outside env: " outside))))