... 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
    ["[0]" text (.only \n)
     ["%" \\injection]]]]]
 [\\library
  ["[0]" /]])

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

        ($.definition /.value)
        ($.definition /.predicate)

        ($.definition (/.Refined it)
          "A refined version of another type, using a predicate to select valid instances.")

        ($.definition (/.Refiner it)
          "A selection mechanism for refined instances of a type.")

        ($.definition /.refiner
          ""
          ($.example (' (refiner predicate))))

        ($.definition /.lifted
          (%.message "Yields a function that can work on refined values."
                     \n "Respects the constraints of the refinement.")
          ($.example (' (lifted transform))))

        ($.definition /.only
          ""
          ($.example (' (only refiner values))))

        ($.definition /.partition
          "Separates refined values from the un-refined ones."
          ($.example (' (partition refiner values))))

        ($.definition /.type
          "The Refined type associated with a Refiner type."
          
          ($.example (' (the even
                          (refiner even?))))
          ($.example (' (the Even
                          Type
                          (type even))))
          ($.example (' (is (Maybe Even)
                            (even 123)))))
        ))
