我希望在我的
第三轮试验:
Expr
定义中捕获类型的有效性。当我定义Add
时遇到了问题,它应该后跟Decimal
或Whole
参数,但我不知道如何同时匹配它们。以下是我的尝试:
第一次尝试:
data DataType = Text | Decimal | Whole
data Expr : DataType -> Type where
Add : (Expr Decimal) -> (Expr Decimal) -> Expr Decimal
Add : (Expr Whole) -> (Expr Whole) -> Expr Whole
第二次尝试:
data DataType = Text | Decimal | Whole
data Expr : DataType -> Type where
Add : (Expr ty) -> (Expr ty) -> Expr ty
第三轮试验:
data DataType = Text | Decimal | Whole
data Expr : DataType -> Type where
Add : (Expr ty@(Decimal | Whole)) -> (Expr ty) -> Expr ty
在第一次尝试中,我被告知不能两次定义Add
。而在第二次尝试中,我不知道如何添加限制条件,即ty
必须是Decimal
和Whole
之一。第三次尝试使用了一些虚构的语法,但这种语法目前还不被支持。
decimal-numeric
替换为DecimalNumeric
。这样做应该有效,符合 Idris 的要求。 - Shersh