質問

序文これは割り当てのためのものです。最初の質問のためにすでに質問が求められています。そのため、データ型があります。

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

そして私は幸せです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top