directive

# `discontiguous/1`

## Description

    discontiguous(Name/Arity)
    discontiguous((Name/Arity, ...))
    discontiguous([Name/Arity, ...])

    discontiguous(Entity::Name/Arity)
    discontiguous((Entity::Name/Arity, ...))
    discontiguous([Entity::Name/Arity, ...])

    discontiguous(Module:Name/Arity)
    discontiguous((Module:Name/Arity, ...))
    discontiguous([Module:Name/Arity, ...])

    discontiguous(Name//Arity)
    discontiguous((Name//Arity, ...))
    discontiguous([Name//Arity, ...])

    discontiguous(Entity::Name//Arity)
    discontiguous((Entity::Name//Arity, ...))
    discontiguous([Entity::Name//Arity, ...])

    discontiguous(Module:Name//Arity)
    discontiguous((Module:Name//Arity, ...))
    discontiguous([Module:Name//Arity, ...])

Declares discontiguous predicates and discontiguous grammar rule non-terminals. The use of this directive should be avoided as not all backend Prolog compilers support discontiguous predicates.

Warning

Some backend Prolog compilers declare the atom `discontiguous` as an operator for a lighter syntax. But this makes the code non-portable and is therefore a practice best avoided.

## Template and modes

    discontiguous(+predicate_indicator_term)
    discontiguous(+non_terminal_indicator_term)

## Examples

    :- discontiguous(counter/1).

    :- discontiguous((lives/2, works/2)).

    :- discontiguous([db/4, key/2, file/3]).