cuddle-1.1.0.0: src/Codec/CBOR/Cuddle/CDDL/CBORGenerator.hs
module Codec.CBOR.Cuddle.CDDL.CBORGenerator (
CBORGenerator (..),
HasGenerator (..),
WrappedTerm (..),
) where
import Codec.CBOR.Term (Term)
import Optics.Core (Lens')
import System.Random.Stateful (StatefulGen)
data WrappedTerm
= -- | Single term
S Term
| -- | Pair term
P Term Term
| -- | Group term
G [WrappedTerm]
deriving (Eq, Show)
newtype CBORGenerator = CBORGenerator (forall g m. StatefulGen g m => g -> m WrappedTerm)
class HasGenerator a where
generatorL :: Lens' a (Maybe CBORGenerator)