(.using
  [library
   [lux {"-" private}
    ["$" documentation {"+" documentation:}]
    [data
     ["[0]" text {"+" \n}
      ["%" format {"+" format}]]]
    [macro
     ["[0]" template]]]]
  [\\library
   ["[0]" /]])

(template [<name> <documentation>]
  [(documentation: <name>
     <documentation>)]

  [/.= "Nat(ural) equivalence."]
  [/.+ "Nat(ural) addition."]
  [/.- "Nat(ural) substraction."]
  [/.< "Nat(ural) less-than."]
  [/.<= "Nat(ural) less-than or equal."]
  [/.> "Nat(ural) greater-than."]
  [/.>= "Nat(ural) greater-than or equal."]
  [/.* "Nat(ural) multiplication."]
  [/./ "Nat(ural) division."]
  [/./% "Nat(ural) [division remainder]."]
  [/.% "Nat(ural) remainder."]
  )

(template [<name> <doc>]
  [(documentation: <name>
     <doc>)]

  [/.min "Nat(ural) minimum."]
  [/.max "Nat(ural) maximum."]
  )

(documentation: /.gcd
  "Greatest Common Divisor.")

(documentation: /.lcm
  "Least Common Multiple.")

(.def: .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [..=
             ..+
             ..-
             ..<
             ..<=
             ..>
             ..>=
             ..*
             ../
             ../%
             ..%
             ..min
             ..max
             ..gcd
             ..lcm
             ($.default /.co_prime?)
             ($.default /.even?)
             ($.default /.odd?)
             ($.default /.frac)
             ($.default /.equivalence)
             ($.default /.order)
             ($.default /.enum)
             ($.default /.interval)
             ($.default /.addition)
             ($.default /.multiplication)
             ($.default /.minimum)
             ($.default /.maximum)
             ($.default /.binary)
             ($.default /.octal)
             ($.default /.hex)
             ($.default /.decimal)
             ($.default /.hash)]
            []))
