如何在一个符合标准的方式写入avs_term_rearranged(AVs, T, AVsR)与给定的AVs和T,使得AVsR是的置换AVs作为其变量发生在左到右的顺序与布置在相同的顺序中的元素T.
AVs是一个表单元素的列表,A = V其中A一个原子指定一个变量名称,'X'并且V是一个相应的变量.这些列表由read_term/2,3read-option variable_names/1(7.10.3)生成.另外,没有定义元素的精确顺序.
| ?- read_term(T,[variable_names(AVs)]).
A+B+A+_+C.
AVs = ['A'=A,'B'=B,'C'=C]
T = A+B+A+_+C
Run Code Online (Sandbox Code Playgroud)
T是一个包含所有变量AVs加上更多的变量的术语.
请注意,在标准符合程序中,不能依赖变量的术语顺序(7.2.1):
7.2.1变量
如果
X和Y是不相同的变量,则Xterm_precedesY应依赖于实现,除了在创建排序列表(7.1.6.5,8.10.3.1 j)期间,排序应保持不变.注 - 如果
X和Y都是匿名变量,则它们不是相同的术语(见6.1.2 a).
以8.4.3.4为例:
sort([f(U),U,U,f(V),f(U),V],L).
Succeeds, unifying L with [U,V,f(U),f(V)] or
[V,U,f(V),f(U)].
[The solution is implementation …Run Code Online (Sandbox Code Playgroud)