directive

# `mode/2`

## Description

    mode(Mode, NumberOfProofs)

Most predicates can be used with several instantiations modes. This directive enables the specification of each instantiation mode and the corresponding number of proofs (but not necessarily distinct solutions). The instantiation mode of each argument can include type information.

## Template and modes

    mode(+predicate_mode_term, +number_of_proofs)
    mode(+non_terminal_mode_term, +number_of_proofs)

## Examples

    :- mode(atom_concat(-atom, -atom, +atom), one_or_more).
    :- mode(atom_concat(+atom, +atom, -atom), one).

    :- mode(var(@term), zero_or_one).

    :- mode(solve(+callable, -list(atom)), zero_or_one).

See also

mode_non_terminal/2, info/2, predicate_property/2