0

本を読んでいるときに問題が発生します。プログラムが「単純な」述語を使用しているのを見ます(私は推測しsimple/1ます)。この述語の意味がわかりません ?-help(simple)。コンソールで見つけることができません。しかし、コンソールでいくつかのクエリを試してみると、次のように機能しました。

5 ?- simple(p(x)).
false.

6 ?- simple(mia).
true.

7 ?- simple(Mia).
true.

8 ?- simple(f(Mia)).
false.

引数が項(または変数)または複雑な項であるかどうかを判断するのは、ある種の述語だと思います。

4

2 に答える 2

2

swi -prolog マニュアルには、次の定義があります。

simple(@Term) is semidet Term はアトミックまたは変数です。

定義は qu​​intus Prolog 互換性ライブラリにあります。quintus プロローグのドキュメントでは、定義は次のとおりです。

シンプル(+ターム)

Term は現在、アトム、数値、データベース、または変数のいずれかにインスタンス化されています。

いずれにせよ、引数が単純な用語である場合、simple/1 は true です (データベースによって quintus マニュアルが何を意味するのかわかりません。おそらく、ODBC 接続のハンドラーだと思います)。

于 2012-01-28T04:32:51.397 に答える
0

ISO述語に変換:

simple(T) :- var(T) ; atomic(T).

var/1は最も基本的なメタプログラミング デバイスです。これは、変数をインスタンス化せずに任意の節について述語 (つまり、コードの実行、変数のバインド) を行うことが不可能であるためです。

于 2012-01-28T08:42:55.673 に答える