在LYAHFGG中的一章中提到,列表被定义为:
data List a = Cons a (List a) deriving (Show, Read, Eq, Ord)
除了Cons以外,我理解这里的大部分内容。当我在ghci中尝试:t Cons
和:i Cons
时,我得到了一个不在作用域内的错误。在本章后面,它还谈到了:-:以及它与Cons相同。
infixr 5 :-:
data List a = Empty | a :-: (List a) deriving (Show, Read, Eq, Ord)
但是我真的不明白这个:-:
是什么意思。
在另一个资源中,在关于数据类型的部分,他们定义了以下数据类型:
data Expr = X
| Const Int
| Expr :+: Expr
| Expr :-: Expr
| Expr :*: Expr
| Expr :/: Expr
| IfZero Expr Expr Expr
deriving (Eq, Ord)
IfZero p q r
与if p == 0 then q else r
相同。这是一样的吗?我主要不明白两个:
的意思,它们是否是强制语法还是只是样式选择。
List a
的值。Empty
是一个有效的表达式,表示一个空列表。Cons 1 Empty
是一个有效的表达式,其值的类型为List Int
。 - Thomas M. DuBuisson:t Cons
的输出将为Cons :: a -> List a -> List a
,而:i Cons
的输出将是您在问题中询问的那一行。 - Marcel Besixdouze