built-in method

# `once/1`

## Description

    once(Goal)

This predicate behaves as `call(Goal)` but it is not re-executable. This built-in meta-predicate is declared as a private method and thus cannot be used as a message to an object.

This meta-predicate is opaque to cuts in its argument.

## Modes and number of proofs

    once(+callable) - zero_or_one

## Errors

`Goal` is a variable:
`instantiation_error`
`Goal` is neither a variable nor a callable term:
`type_error(callable, Goal)`

## Examples

Call a goal deterministically in the context of the object or category containing the call:
`once(Goal)`
To send a goal as a non-backtracable message to self:
`once(::Goal)`
To send a goal as a non-backtracable message to an explicit object:
`once(Object::Goal)`

See also

call/1-N, ignore/1, (\+)/1