是否有用于将函子名称移至参数的Prolog名称?

Guy*_*der 1 terminology prolog

在Prolog中用函子编写的数据很常见,例如

note("This is a note")
Run Code Online (Sandbox Code Playgroud)

但是Prolog也可以使用名称移至参数来处理数据,例如

(note,"This is a note")
Run Code Online (Sandbox Code Playgroud)

将数据名称从函子移动到参数中时,是否存在用于描述此过程的名称?

我有一些代码将对数据进行这样的转换,并希望在文档中包含一个标准名称来描述此更改(如果存在)。


编辑

当前执行此操作的特定原因是,我不必使用= .. / 2,并且还可以使用匿名变量对许多数据进行比较,例如

(_,A,B,C) 
Run Code Online (Sandbox Code Playgroud)

或写更多的通用谓词,例如

do(_)
do(_,A)
do(_,A,B)
Run Code Online (Sandbox Code Playgroud)

代替

do(note(A))
do(note(A,B))
do(note(A,B,C))
do(comment(A))
do(comment(A,B))
do(comment(A,B,C))
do(text(A))
do(text(A,B))
do(text(A,B,C))
Run Code Online (Sandbox Code Playgroud)

编辑

以下是@repeat的评论,其理由是不通过将复合词更改note(A,B)为逗号列表(A,B)(而不是常规列表)来执行此问题中演示的操作[A,B]。这是一个很好的建议,但有时有理由中断此类建议。我目前不能满足我当前的需要,如果在Prolog中这样做是否是其中一种情况,但是正如问题所问的那样,最好为该过程取一个名称,以便可以对其进行搜索以进行研究。


@repeat您可以编辑它并添加注释,因为它们都是知识共享。


gus*_*bro 5

实际上,(note, "this is a note")是一个具有函子,和arity 2 的术语(第一个参数note和第二个参数"this is a note")。

您可以看到这发出以下查询:

?- write_canonical(note("This is a note")).
note("This is a note")

?- write_canonical((note,"This is a note")).
','(note,"This is a note")
Run Code Online (Sandbox Code Playgroud)

因此,通过将主项N的主仿函数“移动”到有理N + 1的项(使用主函数,将先前的仿函数名称作为第一个参数并移动其他参数)来进行的工作是某种概括我不知道是否有更合适的名称。