質問
序文これは割り当てのためのものです。最初の質問のためにすでに質問が求められています。そのため、データ型があります。
data BoolProp : ??? where
ptrue : BoolProp true
pfalse : BoolProp false
pand : (P Q : Bool) -> (BoolProp P) -> (BoolProp Q) -> BoolProp (P ??? Q)
por : (P Q : Bool) -> (BoolProp P) -> (BoolProp Q) -> BoolProp (P ??? Q)
pnot : (P : Bool) -> BoolProp (not P)
.
今私たちは命題を書くように頼まれています
eval (PAnd (POr PTrue PFalse) PFalse)
.
BoolProp
false
を返すべきです
私はこれを行う方法に混乱しているだけです。Ptrue
は、BoolProp true
を返しますが、Datay型por
では、Bool
の2つのBoolProp
を取り込みます。データ型が間違っている可能性があります。どんな頭の上にもすごい
EVALコードがHaskellコードのスニペットであることを追加する必要があります。
注:すべてを逸脱しないように編集
解決
あなたのコードがコンパイルされていない理由は、最初のセクションの括弧内の括弧内が正しくないためです。 たとえば、PANDの場合、そのようになるはずです PAND:∀{P Q:BOOL}→BOOLPROP P→BOOLPROP Q→BOOLPROP(P∧Q)
それを変更して、2番目の部分をコンパイルする必要があります。 私はまったく同じ問題を持っていました....
他のヒント
ええと私はそれが正しくあるかどうか、そしてこれは最初の部分のためだけです 最後の質問についてevalを服用しているなら、私はDunno。
タイプ署名がなので、最初の部分では
prop : BoolProp false
.
PROPをEVALステートメントに等しくしました。 EVALステートメントはBoolpropと等しくなる必要があります。
so
prop = (pand (por ptrue pfalse) pfalse)
.
多分その間違った、私はDunno. しかしそれはC-C C-L. C-C C-N
そして私は幸せです。
所属していません StackOverflow