... This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
... If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

(.require
 [library
  [lux (.except)
   ["$" documentation]
   [data
    [text (.only \n)
     ["%" \\injection]]]]]
 [\\library
  ["[0]" /]])

(the .public documentation
  (.List $.Documentation)
  (list ($.module /._
                  "A method for abstracting I/O and effectful computations to make it safe while writing pure functional code.")

        ($.definition /.functor)
        ($.definition /.apply)
        ($.definition /.monad)

        ($.definition (/.IO it)
          "A type that represents synchronous, effectful computations that may interact with the outside world.")

        ($.definition /.io
          (%.message "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 'value').")
          ($.example (' (io (exec
                              (log! msg)
                              "Some value...")))))

        ($.definition /.value
          "A way to execute IO computations and perform their side-effects.")
        ))
