Deck types, generators, and manipulating functions
A representation of an arbitrary deck or hand of cards.
An exposed type for decks which are already shuffled.
fullSuit : Cards.Suit -> List Cards.Card
Make a deck of all the cards in a single suit.
Makes the deck in A-K order
fullSuit Spades == [ Card Spades Ace, Card Spades Two, Card Spades Three, Card Spades Four, Card Spades Five, Card Spades Six, Card Spades Seven, Card Spades Eight, Card Spades Nine, Card Spades Ten, Card Spades Jack, Card Spades Queen, Card Spades King ]
fullFace : Cards.Face -> List Cards.Card
Make a deck of all the cards for a single face.
Makes the deck in standard order.
fullFace Ace == [ Card Spades Ace, Card Diamonds Ace, Card Clubs Ace, Card Hearts Ace ]
fullDeck : ShuffledDeck
A full 52-card deck in standard order.
fullDeck == Deck [ Card Spades Ace, Card Spades Two, ... ]
newDeck : List Cards.Card -> ShuffledDeck
Create a ShuffledDeck out of a list of cards.
randomDeck : Random.Generator ShuffledDeck
A 52-card deck in randomly shuffled order.
type Msg = ShuffleDeck Deck
Random.generate ShuffleDeck randomDeck
draw : ShuffledDeck -> ( Cards.Card, ShuffledDeck )
Draw a card from a ShuffledDeck.
If the deck is empty, the card returned is Back
.
topCard =
case draw (ShuffledDeck fullDeck) of
( top, _ ) ->
top
topCard == Card.new "spades" 1
appendCard : Cards.Card -> ShuffledDeck -> ShuffledDeck
Add a card to the end of the deck.
appendCard (Card Spades Ace) [ Card Spades Three, Card Spades Two ] == [ Card Spades Three, Card Spades Two, Card Spades Ace ]
length : ShuffledDeck -> Basics.Int
Get the length of the ShuffledDeck
getCards : ShuffledDeck -> List Cards.Card
Get the internal list of cards from a ShuffledDeck
Not reccomended for direct use.
map : (Cards.Card -> a) -> ShuffledDeck -> List a
Map a function from cards over a ShuffledDeck.
See Deck.map
map (\card -> 1) <| newDeck [ Card Spades Ace, Card Heart King ] == [ 1, 1 ]
map defaultFace <| newDeck [ Card Spades Ace, Card Heart King ] == [ 1, 13 ]
filter : (Cards.Card -> Basics.Bool) -> ShuffledDeck -> ShuffledDeck
Filter a ShuffledDeck by a conditional over cards.
foldr : (Cards.Card -> a -> a) -> a -> ShuffledDeck -> a
Fold a function over a ShuffledDeck from the right.
foldl : (Cards.Card -> a -> a) -> a -> ShuffledDeck -> a
Fold a function over a ShuffledDeck from the left.
take : Basics.Int -> ShuffledDeck -> ShuffledDeck
Take some number of cards from the top of a ShuffledDeck