2

私は定義しました!(階乗)関数とそれを算術関数と演算子として登録したので、実行できます:Aは6です!。

今、私は定義したいと思います!! (奇数の階乗)、しかし同じ方法-節を書き、arithmetic_functionと演算子を登録し、Aを呼び出すのは7です!! -結果はSyntaxErrorになります:演算子が必要です

可能であれば、どのように登録すればよいですか。オペレーター?

はい、わかりました!通常はカットです。

4

1 に答える 1

5

! はいわゆるソロキャラなので、2人連続で持つことはできません。そうでない場合、たとえば次のように書くことはできません。

c :- !.

代わりに次のように書く必要があります。

c :- ! .

なぜなら "!。" それ以外の場合は、単一のトークンとして解釈されます。

また、させていただくと!どちらのバージョンも無効な構文です (はい、SWI は引き続きそれを受け入れますが、たとえば GNU Prolog は受け入れません)。あなたは書く必要があります:

c :- (!).

オペランドである演算子は括弧で囲む必要があるためです。! の代わりに、たとえば "f" や "ff" を使用するか、ユース ケースに合わせて Unicode 文字を使用します。

于 2012-03-23T18:12:56.093 に答える