Prolog中的“!”操作符在Erlang中的应用。

3

我已经有足够扎实的Prolog背景,现在想在Erlang中开发代码。这两种语言看起来很相似,但是缺少了在Prolog中非常有用的剪枝“!”操作符。 现在我在想,Erlang中是否有这样的操作符?或者我可能遗漏了什么,没有必要使用这种操作符?

1个回答

5

在 Erlang 中,没有必要使用这个运算符;在 Prolog 中,它用于限制回溯,但在 Erlang 中不存在这种意义上的回溯。

Erlang 的语法与 Prolog 非常相似,因为它最初是在 Prolog 中开发的,并且可以使用其标准库轻松解析,但语义不太相同。


谢谢,但您能否更详细地描述一下“在Erlang中没有回溯”的含义? - user2420079
3
我不确定需要解释什么。Prolog是一种具有回溯功能的逻辑语言(例如:http://www.cse.unsw.edu.au/~billw/dictionaries/prolog/backtrack.html);Erlang是一种函数式语言,没有回溯功能。它不像Prolog那样搜索解决方案,也没有与谓词多次成功等价的功能。 - Alexey Romanov
好的。现在我明白了!它甚至不会尝试查找X。非常感谢。 - user2420079
1
如果你在Erlang中像在Prolog中那样尝试使用member(X, [a, a, a]),你会得到“错误:未绑定变量X”的提示(不是精确措辞)。 - Alexey Romanov
3
感兴趣的内容:Erlang 虚拟机的历史 - Guy Coder
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接