我知道 Prolog(逻辑编程)都是关于返回 true 和 false,并且函数是返回从列表到数字到布尔值的任何东西的东西。最初,Prolog 似乎没有函数的概念,而是依赖于统一,但您可以执行以下操作:
?- X is log(42).
X = 3.7376696182833684.
所以似乎存在功能?或者这真的只是某种隐藏统一部分的语法糖?
如果它真的只是语法糖,那么如果我想定义一个像 log2 这样的数学“函数”,我该怎么办?
当然我可以使用统一:
log2(X,Result) :- Result is log(X)/log(2).
但是假设我想使用“语法糖函数样式”,所以我可以写:
?- X is log2(8).
X = 3.0.
我怎样才能在 Prolog 中做到这一点?