lib/src/Hanafuda/ID.hs

18 lines
410 B
Haskell

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Hanafuda.ID (
ID(..)
) where
import System.Random (Random(..))
newtype ID a = ID {
getID :: Int
} deriving (Eq, Ord, Enum, Read, Show)
rIntToRID :: (Int, g) -> (ID a, g)
rIntToRID (someID, g) = (ID someID, g)
instance Random (ID a) where
random = rIntToRID . randomR (0, maxBound)
randomR (ID idA, ID idB) = rIntToRID . randomR (idA, idB)