[ Advanced Control and Suspensions | Reference Manual | Alphabetic Index ]
merge_suspension_lists(+Pos1, +Attr1, +Pos2, +Attr2)
Destructively merge the suspension list on Pos1 in structure Attr1
into the suspension list on Pos2 in structure Attr2.
- Pos1
- Integer indicating the position of the suspension list.
- Attr1
- Compound term, typically a variable's attribute.
- Pos2
- Integer indicating the position of the suspension list.
- Attr2
- Compound term, typically a variable's attribute.
Description
This predicate is used to merge two suspension lists. The list
in Attr1 remains unaffected but the list in Attr2 is replaced
by the merge of the two lists.
Suspension lists should be regarded an opaque data structure and
only be accessed and manipulated by the set of primitives provided
for this purpose.
Modes and Determinism
- merge_suspension_lists(+, +, +, +) is det
Exceptions
- (4) instantiation fault
- Pos1, Pos2, Attr1 or Attr2 is not instatiated.
- (5) type error
- Pos1 or Pos2 is not an integer.
- (5) type error
- Attr1 or Attr2 is not a structure or has no suspension list on the indicated argument position.
- (6) out of range
- Attr1 or Attr2 does not have a Position'th argument.
Examples
See Also
insert_suspension / 3, insert_suspension / 4, schedule_suspensions / 2, init_suspension_list / 2, enter_suspension_list / 3