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您可以编辑它并添加注释,因为它们都是知识共享。
实际上,(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的项(使用主函数,将先前的仿函数名称作为第一个参数并移动其他参数)来进行的工作是某种概括我不知道是否有更合适的名称。
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |