2017-08-11 23 views
2

MiniKanrenに "not"演算子がありますか? 1が表すだろうか例えばMiniKanrenには "not"演算子がありますか?

、プロローグの

bがtrueで、 cがない場合は
a :- b, not(c) 

aは本当ですcが証明できない場合(Prologは失敗による否定、すなわちnot(c)が証明考えられているを使用しています)

Prolog's notは、非基底式でも使用できます。

a(X, d(Y)) :- b(d(X), d(Y)), not(c(d(X))) 

答えて

1

https://github.com/zhjhxxxjh/ykanrenによると、答えはノーです。

+0

core.logicを参照してください。ただし、google.com/forum/#!topic/clojure/hz63yeQfiQE)。 –

+0

@AndersonGreenはPrologの 'not'と全く同じですか? (編集を参照してください) – MaxB

0

はminikanrenにはnot演算子がありませんが、あなたはcondaと似た何かを達成することができます://グループ:まだ[失敗による否定](HTTPSを可能

(defmacro not 
    "fail if the given goal succeeds, use with extreme caution" 
    [goal] 
    `(conda 
    [~goal fail] 
    [succeed])) 

my similar question on Google Groups

+0

これは、Prologのものと違うことを正しく理解していますか? (編集を参照してください) – MaxB

+0

@MaxB私はPrologのものと同じだと思うでしょう。なぜなら、その特定の瞬間に彼らの議論が証明できなければ、彼らは両方とも成功するからです。しかし、私は論理プログラミングに新しいですし、否定的なことは難しいので、私が間違っていると私は驚かないでしょう。 –

+0

私が理解しているように、miniKanrenのこの構文は、2番目の例のように、変数を扱うことができません。 – MaxB

関連する問題