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でそれを行うにはどうすればよいですか?