{-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-} -- | Provides a random variable (@RVar@) instance for any @Enum@ instance. -- Very convenient, even if may overlap with more specific instances for integer types. module Data.Random.RVar.Enum() where import Data.Random.Distribution import Data.Random.Distribution.Uniform import Control.Applicative((<$>)) -- TODO: Send to library author as a "missing instance" instance (Enum a) => Distribution Uniform a where rvarT (Uniform l h) = toEnum <$> uniformT (fromEnum l) (fromEnum h)