(.require
 [library
  [lux (.except)
   ["$" documentation]
   ["[0]" debug]
   [data
    [text
     ["%" \\format (.only format)]]
    [collection
     ["[0]" sequence]]]
   [meta
    ["[0]" code
     ["<[1]>" \\parser]]
    [macro
     ["[0]" template]]
    [compiler
     ["[0]" phase]
     [language
      [lux
       [phase
        ["[0]" declaration]]]]]]]]
 [\\library
  ["[0]" /]])

(def .public documentation
  (List $.Documentation)
  (list ($.module /._
                  "")

        ($.definition /.analysis
          "Mechanism for defining extensions to Lux's analysis/type-checking infrastructure."
          [(analysis ("my analysis" self phase archive [pass_through <code>.any])
             (phase archive pass_through))])

        ($.definition /.synthesis
          "Mechanism for defining extensions to Lux's synthesis/optimization infrastructure."
          [(synthesis ("my synthesis" self phase archive [pass_through <analysis>.any])
             (phase archive pass_through))])

        ($.definition /.generation
          ""
          [(generation ("my generation" self phase archive [pass_through <synthesis>.any])
             (phase archive pass_through))])

        ($.definition /.declaration
          ""
          [(declaration ("my declaration" self phase archive [parameters (<>.some <code>.any)])
             (do phase.monad
               [.let [_ (debug.log! (format "Successfully installed declaration " (%.text self) "!"))]]
               (in declaration.no_requirements)))])
        ))
