加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SWI-Prolog中的[a | b | c]评估是什么?

发布时间:2020-12-16 05:33:49 所属栏目:百科 来源:网络整理
导读:prolog中的管道操作符返回一个或多个原子头和尾部列表. ?- [a,b,c] = [a,b|[c]].true. 在单个匹配中嵌套多个管道可以类似于以下内容: ?- [a,c] = [a|[b|[c]]].true. 语句[a | b | c]推断a,b和c是什么? 编辑 到目前为止,我可以推断出的是: ?- [a,c] = [a|b
prolog中的管道操作符返回一个或多个原子头和尾部列表.
?- [a,b,c] = [a,b|[c]].
true.

在单个匹配中嵌套多个管道可以类似于以下内容:

?- [a,c] = [a|[b|[c]]].
true.

语句[a | b | c]推断a,b和c是什么?

编辑

到目前为止,我可以推断出的是:

?- [a,c] = [a|b|c].
false.

我更感兴趣的是找到答案的任何技术,而不是回答这个边界无用的问题.

EDIT2
我显然不太熟悉序言,一个简单的作业回答了我的问题…

?- R = [a|b|c].
R = [a| (b'|'c)].

(b’|’c)究竟发生了什么?

解决方法

因为我是你的讲师,所以这是我的答案.
(哦,我可以确认这不是家庭作业,它与实践考试有关).

语法[a | b | c]实际上似乎不是标准的Prolog,一些实现方式的解释不同. (如果我知道我可能没有使用它.)

有人把它解释为[a | [b | c]]. (按照我的意图)

但是使用SWI Prolog(也可能是其他):

?- [a|b|c] = [a|[b|c]].
false.

(b’|’c)实际上是使用’|’而不是 ‘.’作为一个列表将是.所以,第二个|不被解释为构成列表的一部分.

为了证实这一点,以下成功:

   ?- X=(b|c),[a|b|c] = [a|X].
   X = (b'|'c) .

‘|’这似乎是另一个二进制运算符,就像’.’一样.

而不是[a | b | c] Prolog中的标准是使用[a,b | c].

(我只决定在编程范例中使用[a | b | c],因为它更直接地与F#中的符号a :: b :: c相关,我们只看到一个很小的Prolog,将涉及[a | [b | c]],然后给出[a,b | c]作为缩写.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读