{-# LANGUAGE DeriveAnyClass #-}
module UntypedPlutusCore.Transform.Certify.Hints where
import Control.DeepSeq
import GHC.Generics
data Inline
= InlVar
| InlLam Inline
| InlApply Inline Inline
| InlForce Inline
| InlDelay Inline
| InlCon
| InlBuiltin
| InlError
| InlConstr [Inline]
| InlCase Inline [Inline]
| InlExpand Inline
| InlDrop Inline
deriving stock ((forall x. Inline -> Rep Inline x)
-> (forall x. Rep Inline x -> Inline) -> Generic Inline
forall x. Rep Inline x -> Inline
forall x. Inline -> Rep Inline x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Inline -> Rep Inline x
from :: forall x. Inline -> Rep Inline x
$cto :: forall x. Rep Inline x -> Inline
to :: forall x. Rep Inline x -> Inline
Generic)
deriving anyclass (Inline -> ()
(Inline -> ()) -> NFData Inline
forall a. (a -> ()) -> NFData a
$crnf :: Inline -> ()
rnf :: Inline -> ()
NFData)
data InlinePlus term
= InlOne Inline
| InlSeq Inline term (InlinePlus term)
deriving stock ((forall x. InlinePlus term -> Rep (InlinePlus term) x)
-> (forall x. Rep (InlinePlus term) x -> InlinePlus term)
-> Generic (InlinePlus term)
forall x. Rep (InlinePlus term) x -> InlinePlus term
forall x. InlinePlus term -> Rep (InlinePlus term) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall term x. Rep (InlinePlus term) x -> InlinePlus term
forall term x. InlinePlus term -> Rep (InlinePlus term) x
$cfrom :: forall term x. InlinePlus term -> Rep (InlinePlus term) x
from :: forall x. InlinePlus term -> Rep (InlinePlus term) x
$cto :: forall term x. Rep (InlinePlus term) x -> InlinePlus term
to :: forall x. Rep (InlinePlus term) x -> InlinePlus term
Generic, (forall a b. (a -> b) -> InlinePlus a -> InlinePlus b)
-> (forall a b. a -> InlinePlus b -> InlinePlus a)
-> Functor InlinePlus
forall a b. a -> InlinePlus b -> InlinePlus a
forall a b. (a -> b) -> InlinePlus a -> InlinePlus b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall a b. (a -> b) -> InlinePlus a -> InlinePlus b
fmap :: forall a b. (a -> b) -> InlinePlus a -> InlinePlus b
$c<$ :: forall a b. a -> InlinePlus b -> InlinePlus a
<$ :: forall a b. a -> InlinePlus b -> InlinePlus a
Functor, (forall m. Monoid m => InlinePlus m -> m)
-> (forall m a. Monoid m => (a -> m) -> InlinePlus a -> m)
-> (forall m a. Monoid m => (a -> m) -> InlinePlus a -> m)
-> (forall a b. (a -> b -> b) -> b -> InlinePlus a -> b)
-> (forall a b. (a -> b -> b) -> b -> InlinePlus a -> b)
-> (forall b a. (b -> a -> b) -> b -> InlinePlus a -> b)
-> (forall b a. (b -> a -> b) -> b -> InlinePlus a -> b)
-> (forall a. (a -> a -> a) -> InlinePlus a -> a)
-> (forall a. (a -> a -> a) -> InlinePlus a -> a)
-> (forall a. InlinePlus a -> [a])
-> (forall a. InlinePlus a -> Bool)
-> (forall a. InlinePlus a -> Int)
-> (forall a. Eq a => a -> InlinePlus a -> Bool)
-> (forall a. Ord a => InlinePlus a -> a)
-> (forall a. Ord a => InlinePlus a -> a)
-> (forall a. Num a => InlinePlus a -> a)
-> (forall a. Num a => InlinePlus a -> a)
-> Foldable InlinePlus
forall a. Eq a => a -> InlinePlus a -> Bool
forall a. Num a => InlinePlus a -> a
forall a. Ord a => InlinePlus a -> a
forall m. Monoid m => InlinePlus m -> m
forall a. InlinePlus a -> Bool
forall a. InlinePlus a -> Int
forall a. InlinePlus a -> [a]
forall a. (a -> a -> a) -> InlinePlus a -> a
forall m a. Monoid m => (a -> m) -> InlinePlus a -> m
forall b a. (b -> a -> b) -> b -> InlinePlus a -> b
forall a b. (a -> b -> b) -> b -> InlinePlus a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
$cfold :: forall m. Monoid m => InlinePlus m -> m
fold :: forall m. Monoid m => InlinePlus m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> InlinePlus a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> InlinePlus a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> InlinePlus a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> InlinePlus a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> InlinePlus a -> b
foldr :: forall a b. (a -> b -> b) -> b -> InlinePlus a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> InlinePlus a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> InlinePlus a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> InlinePlus a -> b
foldl :: forall b a. (b -> a -> b) -> b -> InlinePlus a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> InlinePlus a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> InlinePlus a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> InlinePlus a -> a
foldr1 :: forall a. (a -> a -> a) -> InlinePlus a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> InlinePlus a -> a
foldl1 :: forall a. (a -> a -> a) -> InlinePlus a -> a
$ctoList :: forall a. InlinePlus a -> [a]
toList :: forall a. InlinePlus a -> [a]
$cnull :: forall a. InlinePlus a -> Bool
null :: forall a. InlinePlus a -> Bool
$clength :: forall a. InlinePlus a -> Int
length :: forall a. InlinePlus a -> Int
$celem :: forall a. Eq a => a -> InlinePlus a -> Bool
elem :: forall a. Eq a => a -> InlinePlus a -> Bool
$cmaximum :: forall a. Ord a => InlinePlus a -> a
maximum :: forall a. Ord a => InlinePlus a -> a
$cminimum :: forall a. Ord a => InlinePlus a -> a
minimum :: forall a. Ord a => InlinePlus a -> a
$csum :: forall a. Num a => InlinePlus a -> a
sum :: forall a. Num a => InlinePlus a -> a
$cproduct :: forall a. Num a => InlinePlus a -> a
product :: forall a. Num a => InlinePlus a -> a
Foldable, Functor InlinePlus
Foldable InlinePlus
(Functor InlinePlus, Foldable InlinePlus) =>
(forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> InlinePlus a -> f (InlinePlus b))
-> (forall (f :: * -> *) a.
Applicative f =>
InlinePlus (f a) -> f (InlinePlus a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> InlinePlus a -> m (InlinePlus b))
-> (forall (m :: * -> *) a.
Monad m =>
InlinePlus (m a) -> m (InlinePlus a))
-> Traversable InlinePlus
forall (t :: * -> *).
(Functor t, Foldable t) =>
(forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: * -> *) a.
Monad m =>
InlinePlus (m a) -> m (InlinePlus a)
forall (f :: * -> *) a.
Applicative f =>
InlinePlus (f a) -> f (InlinePlus a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> InlinePlus a -> m (InlinePlus b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> InlinePlus a -> f (InlinePlus b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> InlinePlus a -> f (InlinePlus b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> InlinePlus a -> f (InlinePlus b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
InlinePlus (f a) -> f (InlinePlus a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
InlinePlus (f a) -> f (InlinePlus a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> InlinePlus a -> m (InlinePlus b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> InlinePlus a -> m (InlinePlus b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
InlinePlus (m a) -> m (InlinePlus a)
sequence :: forall (m :: * -> *) a.
Monad m =>
InlinePlus (m a) -> m (InlinePlus a)
Traversable)
deriving anyclass (InlinePlus term -> ()
(InlinePlus term -> ()) -> NFData (InlinePlus term)
forall term. NFData term => InlinePlus term -> ()
forall a. (a -> ()) -> NFData a
$crnf :: forall term. NFData term => InlinePlus term -> ()
rnf :: InlinePlus term -> ()
NFData)
data Hints term
= Inline (InlinePlus term)
| NoHints
deriving stock ((forall x. Hints term -> Rep (Hints term) x)
-> (forall x. Rep (Hints term) x -> Hints term)
-> Generic (Hints term)
forall x. Rep (Hints term) x -> Hints term
forall x. Hints term -> Rep (Hints term) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall term x. Rep (Hints term) x -> Hints term
forall term x. Hints term -> Rep (Hints term) x
$cfrom :: forall term x. Hints term -> Rep (Hints term) x
from :: forall x. Hints term -> Rep (Hints term) x
$cto :: forall term x. Rep (Hints term) x -> Hints term
to :: forall x. Rep (Hints term) x -> Hints term
Generic, (forall a b. (a -> b) -> Hints a -> Hints b)
-> (forall a b. a -> Hints b -> Hints a) -> Functor Hints
forall a b. a -> Hints b -> Hints a
forall a b. (a -> b) -> Hints a -> Hints b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall a b. (a -> b) -> Hints a -> Hints b
fmap :: forall a b. (a -> b) -> Hints a -> Hints b
$c<$ :: forall a b. a -> Hints b -> Hints a
<$ :: forall a b. a -> Hints b -> Hints a
Functor, (forall m. Monoid m => Hints m -> m)
-> (forall m a. Monoid m => (a -> m) -> Hints a -> m)
-> (forall m a. Monoid m => (a -> m) -> Hints a -> m)
-> (forall a b. (a -> b -> b) -> b -> Hints a -> b)
-> (forall a b. (a -> b -> b) -> b -> Hints a -> b)
-> (forall b a. (b -> a -> b) -> b -> Hints a -> b)
-> (forall b a. (b -> a -> b) -> b -> Hints a -> b)
-> (forall a. (a -> a -> a) -> Hints a -> a)
-> (forall a. (a -> a -> a) -> Hints a -> a)
-> (forall a. Hints a -> [a])
-> (forall a. Hints a -> Bool)
-> (forall a. Hints a -> Int)
-> (forall a. Eq a => a -> Hints a -> Bool)
-> (forall a. Ord a => Hints a -> a)
-> (forall a. Ord a => Hints a -> a)
-> (forall a. Num a => Hints a -> a)
-> (forall a. Num a => Hints a -> a)
-> Foldable Hints
forall a. Eq a => a -> Hints a -> Bool
forall a. Num a => Hints a -> a
forall a. Ord a => Hints a -> a
forall m. Monoid m => Hints m -> m
forall a. Hints a -> Bool
forall a. Hints a -> Int
forall a. Hints a -> [a]
forall a. (a -> a -> a) -> Hints a -> a
forall m a. Monoid m => (a -> m) -> Hints a -> m
forall b a. (b -> a -> b) -> b -> Hints a -> b
forall a b. (a -> b -> b) -> b -> Hints a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
$cfold :: forall m. Monoid m => Hints m -> m
fold :: forall m. Monoid m => Hints m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Hints a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Hints a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Hints a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Hints a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Hints a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Hints a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Hints a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Hints a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Hints a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Hints a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Hints a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Hints a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Hints a -> a
foldr1 :: forall a. (a -> a -> a) -> Hints a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Hints a -> a
foldl1 :: forall a. (a -> a -> a) -> Hints a -> a
$ctoList :: forall a. Hints a -> [a]
toList :: forall a. Hints a -> [a]
$cnull :: forall a. Hints a -> Bool
null :: forall a. Hints a -> Bool
$clength :: forall a. Hints a -> Int
length :: forall a. Hints a -> Int
$celem :: forall a. Eq a => a -> Hints a -> Bool
elem :: forall a. Eq a => a -> Hints a -> Bool
$cmaximum :: forall a. Ord a => Hints a -> a
maximum :: forall a. Ord a => Hints a -> a
$cminimum :: forall a. Ord a => Hints a -> a
minimum :: forall a. Ord a => Hints a -> a
$csum :: forall a. Num a => Hints a -> a
sum :: forall a. Num a => Hints a -> a
$cproduct :: forall a. Num a => Hints a -> a
product :: forall a. Num a => Hints a -> a
Foldable, Functor Hints
Foldable Hints
(Functor Hints, Foldable Hints) =>
(forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Hints a -> f (Hints b))
-> (forall (f :: * -> *) a.
Applicative f =>
Hints (f a) -> f (Hints a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Hints a -> m (Hints b))
-> (forall (m :: * -> *) a. Monad m => Hints (m a) -> m (Hints a))
-> Traversable Hints
forall (t :: * -> *).
(Functor t, Foldable t) =>
(forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: * -> *) a. Monad m => Hints (m a) -> m (Hints a)
forall (f :: * -> *) a. Applicative f => Hints (f a) -> f (Hints a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Hints a -> m (Hints b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Hints a -> f (Hints b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Hints a -> f (Hints b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Hints a -> f (Hints b)
$csequenceA :: forall (f :: * -> *) a. Applicative f => Hints (f a) -> f (Hints a)
sequenceA :: forall (f :: * -> *) a. Applicative f => Hints (f a) -> f (Hints a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Hints a -> m (Hints b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Hints a -> m (Hints b)
$csequence :: forall (m :: * -> *) a. Monad m => Hints (m a) -> m (Hints a)
sequence :: forall (m :: * -> *) a. Monad m => Hints (m a) -> m (Hints a)
Traversable)
deriving anyclass (Hints term -> ()
(Hints term -> ()) -> NFData (Hints term)
forall term. NFData term => Hints term -> ()
forall a. (a -> ()) -> NFData a
$crnf :: forall term. NFData term => Hints term -> ()
rnf :: Hints term -> ()
NFData)