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

(documentation: /.program:
  "Defines the entry-point to a program (similar to the 'main' function/method in other programming languages)."
  ["Can take a list of all the input parameters to the program."
   (program: all_arguments
     (do io.monad
       [foo (initialize program)]
       (do_something_with all_arguments)))]
  ["Can also parse them using CLI parsers from the library/lux/control/parser/cli module."
   (program: [config configuration_parser]
     (do io.monad
       [data (initialize program with config)]
       (do_something_with data)))])

(.def: .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [..program:]
            []))
