首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Prolog中,construction s()代表什么?

在Prolog中,construction s()代表什么?
EN

Stack Overflow用户
提问于 2021-04-02 13:26:30
回答 2查看 56关注 0票数 0

我在Prolog中有一段示例代码。我想知道谓词/规则/函子s()在Prolog中意味着什么?(以breadth_search).开头的在线在示例代码中,我没有看到这个构造的任何声明。它可能是一个系统谓词。谁知道呢?

代码语言:javascript
复制
main(Decision) :-
     initial_state(State),
     breadth_search([s(State,[])],[],[],Decision),
     writeln(Decision).
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-02 13:45:23

它只是“代表自己”。

s(State,[])

只是一个结构/图(“术语”),实际上是一棵树,具有:

IMHO) -

  • 是一个标记为s的节点,它被标记为根
  • 2参数
    • ,无论变量名称State指定为arg1 (如果该变量未绑定,它可能是“空单元”)

    H 110表示空列表为arg2的特殊常量(取决于实现,这可能是一个“空指针”,也可能不是“空指针”;在SWI中,它是一个特殊的“原子”术语,这是正确的实现决定。

代码语言:javascript
复制
        s
        |
   +----+----+
   |         |
 State       []
票数 1
EN

Stack Overflow用户

发布于 2021-04-02 14:05:30

你写道:

“我没有在示例代码上看到这个构造的任何声明。

为什么应该有呢?Prolog不是 language。Prolog的谓词不计算它们的参数。一切都是象征性的。每一条数据都是象征性的。它不会被评估。它保持原样。

特别是,Prolog的一些术语属于“复合”术语的范畴。它们有一个标签-- Prolog术语中的“函子”,还有一些“参数”。眼见为实,所以

代码语言:javascript
复制
a_functor( arg1, arg2, arg3 )

是一个复合词,指“性质”3 (a.k.a.“三元”项),有三个参数和一个函子a_functor。函子必须是简单原子,参数可以是任何有效的Prolog项,包括逻辑变量。

因此,

代码语言:javascript
复制
s(State,[])

是第2 (a.k.a )的复合词的另一个例子。“二进制”项),带有函子s (一个简单的原子)和两个参数,一个逻辑变量State和一个术语[]

这就是全部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66920023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档