18 lines
410 B
Haskell
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)
|