haskell - Parse error on a data type I defined -
I am trying to create a card game in Haskell
I defined the following data types P>
data rank = R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 | J. Q | K | A deriving (affair, Enum, Eq, Ord) data suit = S | H | D | Deriving (Eq, ORD) type deck = [card] C deriving (Gola, Enum, Eq, Ord, Show) data card = Cards (rank :: rank, suit :: suit) > Then I am trying to define constants for a complete deck, such as:
fullDeck :: deck full deck = [card (R2, S) ..... ..... For every card in the deck with a lot of cards behind it - when I try to compile it, I get the "Pars error error on input R2" error I R2 rank As part of the data type, and I do not know why it is not working properly
You are mixing positional and field notation. Either use:
card R2 S or
card {rank = r2, suit = s } Expression:
card {R2, S} is not valid.
is an extension that will allow you to type something similar to writing. Specifically, it allows things like:
acard = card {rank, suit} where instead of rank = r2 suit = s :
aCard = Card {rank = rank, suit = suit} where rank = r2 suit = s However, in this case you Should use the field name so that the compiler can guess the field you play. The extension also allows to avoid recurrence in the pattern:
F (card {rank, suit}) = ... Instead of:
f (card {rank = rank, suit = suit}) = ... The syntax enabled the extension Should be used without.
Comments
Post a Comment