!import "base" !Local !import "list" !Local !import "io" !Local -- Transform an IO result. -- mapIO applies a pure function to the value produced by an action. -- Run with --allow-read PATH or --unsafe-io. safeRead = (path : bind (readFile path) (result : matchResult (err rest : pure "missing") (contents rest : pure contents) result)) shout = (path : mapIO (safeRead path) (text : append text "!!!")) main = io (bind (shout "demos/interactionTrees/greet.tri") (text : putStrLn text))