 uses some variation of this to achieve pure FP with their <code>IO</code> constructs. Lazy semantics are simulated with functions in Bucklescript and Purescript, and what Purescript does is it keeps the side-effects in a function, threads these functions together using <code>flat_map</code> without evaluating it yet by wrapping the computation in a function, and then the runtime (calling <code>main</code>) or <code>unsafePerformIO</code> will run the side-effects by calling the function. This makes the lan