module Dominion.Utils where
import Control.Monad
import Control.Monad.State
import Data.Random.Extras
import Data.Random hiding (shuffle)
import System.Random
import Language.Haskell.HsColour.ANSI
import Data.List
red = highlight [Foreground Red]
green = highlight [Foreground Green]
yellow = highlight [Foreground Yellow]
blue = highlight [Foreground Blue]
cyan = highlight [Foreground Cyan]
dim = highlight [Dim]
count :: Eq a => a -> [a] -> Int
count x list = length $ filter (==x) list
countBy func list = length $ filter func list
for = flip map
deckShuffle :: [a] -> IO [a]
deckShuffle deck = do
gen <- getStdGen
let (shuffled, newGen) = sampleState (shuffle deck) gen
setStdGen newGen
return shuffled
times iterations block = forM_ [1..iterations] $ \_ -> block
indices :: [a] -> [Int]
indices arr = [0..(length arr 1)]
join = intercalate