module CardDeck ( generateCards, generateShuffledCards ) where import Shuffle -- Colors of cards data CardType = Clubs | Diamonds | Hearts | Spades | NoneType deriving (Show, Enum, Eq) -- Values of cards data CardValue = Ace | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten | Jack | Queen | King | NoneValue deriving (Show, Enum, Eq) -- A card has a type and a value type Card = (CardType, CardValue) -- A deck of cards type Deck = [Card] generateCards :: Deck generateCards = [(cType, cValue) | cType <- types, cValue <- values] where types = init $ enumFrom Clubs values = init $ enumFrom Ace generateShuffledCards :: Deck generateShuffledCards = shuffle generateCards