diff --git a/src/Hanafuda/ID.hs b/src/Hanafuda/ID.hs index d9bb031..5e7eeba 100644 --- a/src/Hanafuda/ID.hs +++ b/src/Hanafuda/ID.hs @@ -1,10 +1,17 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Hanafuda.ID ( - ID(..) - , getID + ID(..) ) where -newtype ID a = ID Int deriving (Eq, Ord, Enum, Read, Show) +import System.Random (Random(..)) -getID :: ID a -> String -getID (ID n) = show n +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)