У меня есть следующиеHaskell GADTs конструктор
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
любая помощь была бы оценена :)
EDIT: изменил весь пост, чтобы добавить немного больше информации и ясности (на основе моего понимания упражнения).
В основном мне нужна помощь в определении конструкторов для GADT с учетом data Expr = Condition v...etc
в качестве ссылки.
В декларации, отличной от GADT, выражение «Expr» не имеет параметра (в отличие от GADT), это специально? – huon
@ dbaupp Я бы так сказал, так как это было дано мне для упражнения. – SNpn
'V' не является переменной типа (в первом определении), так как в верхнем регистре он должен ссылаться на определенный тип, верно? – Peter