Apply and Property terms must be non-variable. The list below
indicates the valid forms of Apply, indicating determinism. Note that
only peek and pop perform non-deterministically for all thread-local
payloads.
reset
is det
push
is semi-det
peek(Payload)
is non-det
pop(Payload)
is non-det
[Apply0|Applies]
is semi-det
- Apply is semi-det for payload
Properties as follows.
top(Property)
is semi-det for payload
- Property is semi-det for payload
The first form top/1 peeks at the latest payload once. It behaves
semi-deterministically for the top-most payload.
- payload(:PI) is det
- Makes public multi-file apply-to and property-of predicates using
the predicate indicator PI of the form M:Payload/{ToArity, OfArity}
where arity specifications define the arity or arities for a
payload. Defines predicates M:apply_to_Payload/ToArity and
M:property_of_Payload/OfArity for module M. Allows comma-separated
lists of arities.
- apply_to(+Apply, :To) is nondet
- apply_to(+Applies, :To) is semidet
-
- Arguments:
-
Applies | - is a list of Apply terms. It succeeds when all its
Apply terms succeed, and fails when the first one fails, possibly
leaving side effects if the apply-to predicate generates addition
effects; though typically not for mutation arity-3 apply-to
predicates. |
- property_of(+Property, :Of) is nondet
- Finds Property of some payload where the second argument M:Of
defines the module M and payload atom Of.
Property top/1 peeks semi-deterministically at the top-most payload
for some given property.
Undocumented predicates
The following predicates are exported, but not or incorrectly documented.
- apply_to(Arg1)
- property_of(Arg1)