.. index:: single: validation .. _validation/0: .. rst-class:: right **object** ``validation`` ============== Constructors for validation terms. A validation term is either ``valid(Value)`` or ``invalid(Errors)`` where ``Errors`` is a list of errors. Validation terms allow applicative-style error accumulation. | **Availability:** | ``logtalk_load(validations(loader))`` | **Author:** Paulo Moura | **Version:** 1:0:0 | **Date:** 2026-02-22 | **Compilation flags:** | ``static, context_switching_calls`` | **Provides:** | :ref:`type::type/1 ` | :ref:`type::check/2 ` | **Uses:** | :ref:`list ` | :ref:`type ` | **Remarks:** - Type-checking support: Defines a ``validation`` type for use with the ``type`` library object. | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: of_valid/2 .. _validation/0::of_valid/2: ``of_valid/2`` ^^^^^^^^^^^^^^ Constructs a validation term holding a valid value. | **Compilation flags:** | ``static`` | **Template:** | ``of_valid(Value,Validation)`` | **Mode and number of proofs:** | ``of_valid(@term,--nonvar)`` - ``one`` ------------ .. index:: of_invalid/2 .. _validation/0::of_invalid/2: ``of_invalid/2`` ^^^^^^^^^^^^^^^^ Constructs a validation term holding a single error. | **Compilation flags:** | ``static`` | **Template:** | ``of_invalid(Error,Validation)`` | **Mode and number of proofs:** | ``of_invalid(@term,--nonvar)`` - ``one`` ------------ .. index:: of_invalids/2 .. _validation/0::of_invalids/2: ``of_invalids/2`` ^^^^^^^^^^^^^^^^^ Constructs a validation term holding a list of errors. | **Compilation flags:** | ``static`` | **Template:** | ``of_invalids(Errors,Validation)`` | **Mode and number of proofs:** | ``of_invalids(@list,--nonvar)`` - ``one`` ------------ .. index:: from_goal/4 .. _validation/0::from_goal/4: ``from_goal/4`` ^^^^^^^^^^^^^^^ Constructs a validation term holding a value bound by calling the given goal. Otherwise returns a validation term with a single error represented by the ``Error`` argument. | **Compilation flags:** | ``static`` | **Template:** | ``from_goal(Goal,Value,Error,Validation)`` | **Meta-predicate template:** | ``from_goal(0,*,*,*)`` | **Mode and number of proofs:** | ``from_goal(+callable,--term,@term,--nonvar)`` - ``one`` ------------ .. index:: from_goal/3 .. _validation/0::from_goal/3: ``from_goal/3`` ^^^^^^^^^^^^^^^ Constructs a validation term holding a value bound by calling the given goal. Otherwise returns a validation term with a single error being the goal error or the atom ``fail`` representing goal failure. | **Compilation flags:** | ``static`` | **Template:** | ``from_goal(Goal,Value,Validation)`` | **Meta-predicate template:** | ``from_goal(0,*,*)`` | **Mode and number of proofs:** | ``from_goal(+callable,--term,--nonvar)`` - ``one`` ------------ .. index:: from_goal/2 .. _validation/0::from_goal/2: ``from_goal/2`` ^^^^^^^^^^^^^^^ Constructs a validation term holding a value bound by calling the given closure. Otherwise returns a validation term with a single error being the closure error or the atom ``fail`` representing closure failure. | **Compilation flags:** | ``static`` | **Template:** | ``from_goal(Closure,Validation)`` | **Meta-predicate template:** | ``from_goal(1,*)`` | **Mode and number of proofs:** | ``from_goal(+callable,--nonvar)`` - ``one`` ------------ .. index:: from_generator/4 .. _validation/0::from_generator/4: ``from_generator/4`` ^^^^^^^^^^^^^^^^^^^^ Constructs validation terms with the values generated by calling the given goal. On goal error or failure, returns a validation term with a single error represented by the ``Error`` argument. | **Compilation flags:** | ``static`` | **Template:** | ``from_generator(Goal,Value,Error,Validation)`` | **Meta-predicate template:** | ``from_generator(0,*,*,*)`` | **Mode and number of proofs:** | ``from_generator(+callable,--term,@term,--nonvar)`` - ``one_or_more`` ------------ .. index:: from_generator/3 .. _validation/0::from_generator/3: ``from_generator/3`` ^^^^^^^^^^^^^^^^^^^^ Constructs validation terms with the values generated by calling the given goal. On goal error or failure, returns a validation term with, respectively, a single error being the goal error or the atom ``fail`` representing goal failure. | **Compilation flags:** | ``static`` | **Template:** | ``from_generator(Goal,Value,Validation)`` | **Meta-predicate template:** | ``from_generator(0,*,*)`` | **Mode and number of proofs:** | ``from_generator(+callable,--term,--nonvar)`` - ``one_or_more`` ------------ .. index:: from_generator/2 .. _validation/0::from_generator/2: ``from_generator/2`` ^^^^^^^^^^^^^^^^^^^^ Constructs validation terms with the values generated by calling the given closure. On closure error or failure, returns a validation term with, respectively, a single error being the closure error or the atom ``fail`` representing closure failure. | **Compilation flags:** | ``static`` | **Template:** | ``from_generator(Closure,Validation)`` | **Meta-predicate template:** | ``from_generator(1,*)`` | **Mode and number of proofs:** | ``from_generator(+callable,--nonvar)`` - ``one_or_more`` ------------ .. index:: from_optional/3 .. _validation/0::from_optional/3: ``from_optional/3`` ^^^^^^^^^^^^^^^^^^^ Converts an optional term to a validation term. Returns a valid term holding the value if the optional term is not empty. Returns an invalid term with the given error otherwise. | **Compilation flags:** | ``static`` | **Template:** | ``from_optional(Optional,Error,Validation)`` | **Mode and number of proofs:** | ``from_optional(+nonvar,@term,--nonvar)`` - ``one`` ------------ .. index:: from_expected/2 .. _validation/0::from_expected/2: ``from_expected/2`` ^^^^^^^^^^^^^^^^^^^ Converts an expected term to a validation term. Returns a valid term holding the value if the expected term holds a value. Returns an invalid term with the expected term error otherwise. | **Compilation flags:** | ``static`` | **Template:** | ``from_expected(Expected,Validation)`` | **Mode and number of proofs:** | ``from_expected(+nonvar,--nonvar)`` - ``one`` ------------ Protected predicates -------------------- (no local declarations; see entity ancestors if any) Private predicates ------------------ (no local declarations; see entity ancestors if any) Operators --------- (none) .. seealso:: :ref:`validation(Validation) `, :ref:`validated `, :ref:`type `, :ref:`arbitrary `