mangle/3 — destructively modify a structure
mangle(Nth, Structure, NewArg)
mangle/3 destructively modifies an argument of a compound term in a spirit similar to Lisp’s rplaca and rplacd.
Structure must be instantiated to a compound term with at least
Nth arguments. The
Nth argument of Structure will become
NewArg. Lists are considered to be structures of arity two in the usual way.
Modifications made to a structure by
mangle/3 will survive failure and backtracking.
mangle/3 implements destructive assignment in Prolog, it is not necessarily more efficient than copying a term. This is due to the extensive cleanup operation which ensures that the effects of a
mangle/3 persist across failure.
?- Victim = doNot(fold,staple,mutilate), mangle(2,Victim,spindle). Victim = doNot(fold,spindle,mutilate) yes.