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

(def .public documentation
  (List $.Documentation)
  (list ($.module /._
                  "Functionality for working with tuples (particularly 2-tuples/pairs).")

        ($.definition /.equivalence)
        ($.definition /.hash)

        ($.definition /.left
          "The left side of a pair.")

        ($.definition /.right
          "The right side of a pair.")

        ($.definition /.curried
          "Converts a 2-argument function into nested single-argument functions."
          [(curried f)])

        ($.definition /.uncurried
          "Converts nested single-argument functions into a 2-argument function."
          [(uncurried f)])

        ($.definition /.swapped
          ""
          [(swapped [left right])])

        ($.definition /.then
          "Apply functions to both sides of a pair."
          [(then f g)])

        ($.definition /.forked
          "Yields a pair by applying both functions to a single value."
          [(forked f g)])
        ))
