Prolog中将函子名移至参数的操作是否有标准命名?
将Prolog复合项的函子移至参数的操作是否有标准命名?
在Prolog开发中,我发现数据常以带函子的形式编写,比如 note("This is a note");同时Prolog也支持另一种写法——把函子名移到参数里,比如 (note,"This is a note")。我现在需要编写做这类转换的代码,想知道这个操作有没有标准命名,方便写入项目文档。
补充背景说明
我之所以要做这个转换,主要有以下几点原因:
- 无需依赖
=../2谓词来拆分复合项 - 可以利用匿名变量对大量数据进行统一比较,例如用
(_,A,B,C)就能匹配任意函子开头、后续带三个参数的结构 - 能够编写更通用的谓词,比如只需要定义
do(_)、do(_,A)、do(_,A,B)这类通用实现,而不用针对不同函子编写一堆特定的do(note(A))、do(note(A,B))等谓词
相关评论
@repeat 的评论:
这里需要提醒,不应该将复合项note(A,B)转换为逗号列表(note,A,B)(而非常规列表[note,A,B]),这是合理的建议。不过实际开发中有时确实存在打破该建议的需求,我目前还不确定自己的场景是否属于这类情况,但仍希望找到该操作的标准命名以用于后续研究。另外允许@repeat编辑这段内容,本内容采用知识共享许可。
内容的提问来源于stack exchange,提问作者Guy Coder
相关产品推荐
相关产品推荐

