{-# LANGUAGE RankNTypes #-} module Arbitrary where import qualified Test.QuickCheck as QC import Text.Earley.Generator -- | Generate an arbitrary member generated by a 'Generator'. arbitrary :: Generator t a -> QC.Gen (a, [t]) arbitrary gen = QC.sized $ \n -> QC.elements (take (1 `max` n) xs) where xs = language gen