module FlexTask.GenUtil ( fromGen, ) where import Control.Monad.Random (MonadRandom(getRandom)) import Test.QuickCheck.Gen (Gen(unGen)) import Test.QuickCheck.Random (mkQCGen) {- | Convert a QuickCheck generator into a member of MonadRandom. -} fromGen :: MonadRandom m => Gen a -> m a fromGen :: forall (m :: * -> *) a. MonadRandom m => Gen a -> m a fromGen Gen a gen = do seed <- m Int forall a. Random a => m a forall (m :: * -> *) a. (MonadRandom m, Random a) => m a getRandom pure $ unGen gen (mkQCGen seed) 30