(.require [library [lux (.except if loop) ["$" documentation] [data [text (.only \n) ["%" \\format (.only format)]]] [macro ["[0]" template]]]] [\\library ["[0]" /]]) (.def .public documentation (.List $.Module) ($.module /._ "A method for abstracting I/O and effectful computations to make it safe while writing pure functional code." [($.default /.functor) ($.default /.apply) ($.default /.monad) ($.documentation (/.IO it) "A type that represents synchronous, effectful computations that may interact with the outside world.") ($.documentation /.io (format "Delays the evaluation of an expression, by wrapping it in an IO 'thunk'." \n "Great for wrapping effectful computations (which will not be performed until the IO is 'run!').") [(io (exec (log! msg) "Some value..."))]) ($.documentation /.run! "A way to execute IO computations and perform their side-effects.")] []))