module Magic where import Mana ------------------------------------------------------------------------------- -- Cards ------------------------------------------------------------------------------- data Rarity = Land | Common | Uncommon | Rare | Mythic | Special deriving (Show, Eq) data Card = Card Rarity String Cost deriving (Show, Eq) instance Mana Card where colors (Card _ _ cost) = colors cost converted (Card _ _ cost) = converted cost data Deck = Deck [Card] curve :: Deck -> [(Int, Int)] curve (Deck cards) = do let largest = maximum (map converted cards) map (\x -> (x, length (filter (\(Card rarity _ cost) -> rarity /= Land && converted cost == x) cards))) [0..largest] cards = concat $ [ replicate 13 (Card Land "Swamp" (Cost [] [] [])) , replicate 13 (Card Land "Plains" (Cost [] [] [])) , replicate 4 (Card Mythic "Jace Beleren" (Cost [Standard 1 Colorless, Standard 2 Blue] [] [])) ] deck = Deck cards