(.require [library [lux (.except if loop) ["$" documentation (.only documentation:)] [data [text (.only \n) ["%" \\format (.only format)]]] [macro ["[0]" template]]]] [\\library ["[0]" /]]) (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.") (.def .public documentation (.List $.Module) ($.module /._ "A method for abstracting I/O and effectful computations to make it safe while writing pure functional code." [..IO ..io ..run! ($.default /.functor) ($.default /.apply) ($.default /.monad)] []))