私は以下を持っています
data Expr = Condition v
| And Expr Expr
| Or Expr Expr
そして、私は完了するために次のタイプされていないバージョンを検討するように求められます:
data Expr e where
コンストラクターのために何を書くべきかわかりません。私は次のことを試しました:
data Expr e where
Condition :: v -> Expr v
And :: -- really not sure what to do with this one
OR :: Expr b -> (Expr b -> Expr a) -> Maybe Expr a -> Expr b
また、v
どのタイプでもかまいませんのでint
、bool
以下(上記)と呼んでv
後でタイプを宣言するだけでいいのでしょうか?
data v = IntVat int
どんな助けでも大歓迎です:)
編集:投稿全体を変更して、もう少し情報と明確さを追加しました(演習の私の理解に基づいています)。
基本的に、参照として与えられたGADTのコンストラクターを理解するのに助けが必要data Expr = Condition v...etc
です。