В LYAHFGG, одна главу говорит, что список определяются как:Что означает «Минусы» и: -: означает в Haskell?
data List a = Cons a (List a) deriving (Show, Read, Eq, Ord)
Я понимаю, что большинство это означает, что помимо Cons. Когда я пытаюсь :t Cons
и :i Cons
в ghci
Я получаю ошибку не в области. Позже в этой главе он также говорит о том: -: и как это так же, как 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
. Это одно и то же? Я в основном смущен относительно того, что означают два значения, и если это обязательный синтаксис или просто выбор стиля.
Предлагаю вам прочитать синтаксис объявления данных. Это конструкторы. –
@ ThomasM.DuBuisson любые ресурсы, которые вы могли бы предложить? Ни один из них не очень хорошо объясняет. – user6731064
Я всегда чувствовал, что wikibooks - это ресурс с низким рейтингом (https://en.wikibooks.org/wiki/Haskell/Type_declarations), но у LYAH есть глава для этого (http: // learnyouahaskell.com/making-our-own-types-and-typeclasses#algebraic-data-types). –