【发布时间】:2016-02-17 17:17:30
【问题描述】:
在我的编程语言课中,我们正在运行以下程序:
range(X,Y,Z) :- X>=Y,X<=Z
这不会编译,在谷歌搜索之后,我们发现 prolog 使用 =
有人对prolog为什么这样做有任何见解吗?有什么原因吗?
提前致谢。
【问题讨论】:
标签: syntax prolog operators conventions
在我的编程语言课中,我们正在运行以下程序:
range(X,Y,Z) :- X>=Y,X<=Z
这不会编译,在谷歌搜索之后,我们发现 prolog 使用 =
有人对prolog为什么这样做有任何见解吗?有什么原因吗?
提前致谢。
【问题讨论】:
标签: syntax prolog operators conventions
是的,有一个很好的理由:<=看起来像一个箭头,而且由于Prolog也经常用于逻辑证明,所以这是“保留的”在需要时适应此类用途,从右到左表示暗示。
顺便说一句,(=<)/2 是相当低级的。更好地使用约束,使您的程序更通用、更易于理解。
【讨论】:
=< 而不是=>:想象你沿着符号从左到右移动你的手:=> 你受伤了,而=< 则如此流畅!就像>=。种。
=>先是这么顺利,然后你受伤了;与>= 一起,它首先会很痛,然后变得如此顺畅,而=< 总是如此顺畅。