module Morley.Michelson.Untyped.View
( ViewName (ViewName, ..)
, mkViewName
, BadViewNameError (..)
, isValidViewNameChar
, viewNameMaxLength
, renderViewName
, viewNameToMText
, View' (..)
, ViewsSet (..)
, mkViewsSet
, VS.ViewsSetError (..)
, emptyViewsSet
, addViewToSet
, lookupView
, viewsSetNames
) where
import Data.Aeson (FromJSON, ToJSON)
import Data.Aeson.TH (deriveJSON)
import Data.Coerce (coerce)
import Data.Data (Data)
import Data.Default (Default)
import Morley.Michelson.Internal.ViewName
import Morley.Michelson.Internal.ViewsSet qualified as VS
import Morley.Michelson.Untyped.Type
import Morley.Util.Aeson
data View' op = View
{ forall op. View' op -> ViewName
viewName :: ViewName
, forall op. View' op -> Ty
viewArgument :: Ty
, forall op. View' op -> Ty
viewReturn :: Ty
, forall op. View' op -> [op]
viewCode :: [op]
} deriving stock (View' op -> View' op -> Bool
(View' op -> View' op -> Bool)
-> (View' op -> View' op -> Bool) -> Eq (View' op)
forall op. Eq op => View' op -> View' op -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: View' op -> View' op -> Bool
$c/= :: forall op. Eq op => View' op -> View' op -> Bool
== :: View' op -> View' op -> Bool
$c== :: forall op. Eq op => View' op -> View' op -> Bool
Eq, Int -> View' op -> ShowS
[View' op] -> ShowS
View' op -> String
(Int -> View' op -> ShowS)
-> (View' op -> String) -> ([View' op] -> ShowS) -> Show (View' op)
forall op. Show op => Int -> View' op -> ShowS
forall op. Show op => [View' op] -> ShowS
forall op. Show op => View' op -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [View' op] -> ShowS
$cshowList :: forall op. Show op => [View' op] -> ShowS
show :: View' op -> String
$cshow :: forall op. Show op => View' op -> String
showsPrec :: Int -> View' op -> ShowS
$cshowsPrec :: forall op. Show op => Int -> View' op -> ShowS
Show, (forall a b. (a -> b) -> View' a -> View' b)
-> (forall a b. a -> View' b -> View' a) -> Functor View'
forall a b. a -> View' b -> View' a
forall a b. (a -> b) -> View' a -> View' b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> View' b -> View' a
$c<$ :: forall a b. a -> View' b -> View' a
fmap :: forall a b. (a -> b) -> View' a -> View' b
$cfmap :: forall a b. (a -> b) -> View' a -> View' b
Functor, Typeable (View' op)
Typeable (View' op)
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> View' op -> c (View' op))
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (View' op))
-> (View' op -> Constr)
-> (View' op -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (View' op)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (View' op)))
-> ((forall b. Data b => b -> b) -> View' op -> View' op)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r)
-> (forall u. (forall d. Data d => d -> u) -> View' op -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> View' op -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op))
-> Data (View' op)
View' op -> DataType
View' op -> Constr
(forall b. Data b => b -> b) -> View' op -> View' op
forall {op}. Data op => Typeable (View' op)
forall op. Data op => View' op -> DataType
forall op. Data op => View' op -> Constr
forall op.
Data op =>
(forall b. Data b => b -> b) -> View' op -> View' op
forall op u.
Data op =>
Int -> (forall d. Data d => d -> u) -> View' op -> u
forall op u.
Data op =>
(forall d. Data d => d -> u) -> View' op -> [u]
forall op r r'.
Data op =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
forall op r r'.
Data op =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
forall op (m :: * -> *).
(Data op, Monad m) =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
forall op (m :: * -> *).
(Data op, MonadPlus m) =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
forall op (c :: * -> *).
Data op =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (View' op)
forall op (c :: * -> *).
Data op =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> View' op -> c (View' op)
forall op (t :: * -> *) (c :: * -> *).
(Data op, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (View' op))
forall op (t :: * -> * -> *) (c :: * -> *).
(Data op, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (View' op))
forall a.
Typeable a
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> View' op -> u
forall u. (forall d. Data d => d -> u) -> View' op -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (View' op)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> View' op -> c (View' op)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (View' op))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (View' op))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
$cgmapMo :: forall op (m :: * -> *).
(Data op, MonadPlus m) =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
$cgmapMp :: forall op (m :: * -> *).
(Data op, MonadPlus m) =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
$cgmapM :: forall op (m :: * -> *).
(Data op, Monad m) =>
(forall d. Data d => d -> m d) -> View' op -> m (View' op)
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> View' op -> u
$cgmapQi :: forall op u.
Data op =>
Int -> (forall d. Data d => d -> u) -> View' op -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> View' op -> [u]
$cgmapQ :: forall op u.
Data op =>
(forall d. Data d => d -> u) -> View' op -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
$cgmapQr :: forall op r r'.
Data op =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
$cgmapQl :: forall op r r'.
Data op =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> View' op -> r
gmapT :: (forall b. Data b => b -> b) -> View' op -> View' op
$cgmapT :: forall op.
Data op =>
(forall b. Data b => b -> b) -> View' op -> View' op
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (View' op))
$cdataCast2 :: forall op (t :: * -> * -> *) (c :: * -> *).
(Data op, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (View' op))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (View' op))
$cdataCast1 :: forall op (t :: * -> *) (c :: * -> *).
(Data op, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (View' op))
dataTypeOf :: View' op -> DataType
$cdataTypeOf :: forall op. Data op => View' op -> DataType
toConstr :: View' op -> Constr
$ctoConstr :: forall op. Data op => View' op -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (View' op)
$cgunfold :: forall op (c :: * -> *).
Data op =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (View' op)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> View' op -> c (View' op)
$cgfoldl :: forall op (c :: * -> *).
Data op =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> View' op -> c (View' op)
Data, (forall x. View' op -> Rep (View' op) x)
-> (forall x. Rep (View' op) x -> View' op) -> Generic (View' op)
forall x. Rep (View' op) x -> View' op
forall x. View' op -> Rep (View' op) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall op x. Rep (View' op) x -> View' op
forall op x. View' op -> Rep (View' op) x
$cto :: forall op x. Rep (View' op) x -> View' op
$cfrom :: forall op x. View' op -> Rep (View' op) x
Generic)
instance NFData op => NFData (View' op)
deriveJSON morleyAesonOptions ''View'
newtype ViewsSet instr = UnsafeViewsSet { forall instr. ViewsSet instr -> Map ViewName (View' instr)
unViewsSet :: Map ViewName (View' instr) }
deriving newtype (Value -> Parser [ViewsSet instr]
Value -> Parser (ViewsSet instr)
(Value -> Parser (ViewsSet instr))
-> (Value -> Parser [ViewsSet instr]) -> FromJSON (ViewsSet instr)
forall instr. FromJSON instr => Value -> Parser [ViewsSet instr]
forall instr. FromJSON instr => Value -> Parser (ViewsSet instr)
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ViewsSet instr]
$cparseJSONList :: forall instr. FromJSON instr => Value -> Parser [ViewsSet instr]
parseJSON :: Value -> Parser (ViewsSet instr)
$cparseJSON :: forall instr. FromJSON instr => Value -> Parser (ViewsSet instr)
FromJSON, [ViewsSet instr] -> Encoding
[ViewsSet instr] -> Value
ViewsSet instr -> Encoding
ViewsSet instr -> Value
(ViewsSet instr -> Value)
-> (ViewsSet instr -> Encoding)
-> ([ViewsSet instr] -> Value)
-> ([ViewsSet instr] -> Encoding)
-> ToJSON (ViewsSet instr)
forall instr. ToJSON instr => [ViewsSet instr] -> Encoding
forall instr. ToJSON instr => [ViewsSet instr] -> Value
forall instr. ToJSON instr => ViewsSet instr -> Encoding
forall instr. ToJSON instr => ViewsSet instr -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ViewsSet instr] -> Encoding
$ctoEncodingList :: forall instr. ToJSON instr => [ViewsSet instr] -> Encoding
toJSONList :: [ViewsSet instr] -> Value
$ctoJSONList :: forall instr. ToJSON instr => [ViewsSet instr] -> Value
toEncoding :: ViewsSet instr -> Encoding
$ctoEncoding :: forall instr. ToJSON instr => ViewsSet instr -> Encoding
toJSON :: ViewsSet instr -> Value
$ctoJSON :: forall instr. ToJSON instr => ViewsSet instr -> Value
ToJSON, ViewsSet instr
ViewsSet instr -> Default (ViewsSet instr)
forall instr. ViewsSet instr
forall a. a -> Default a
def :: ViewsSet instr
$cdef :: forall instr. ViewsSet instr
Default, ViewsSet instr -> ()
(ViewsSet instr -> ()) -> NFData (ViewsSet instr)
forall instr. NFData instr => ViewsSet instr -> ()
forall a. (a -> ()) -> NFData a
rnf :: ViewsSet instr -> ()
$crnf :: forall instr. NFData instr => ViewsSet instr -> ()
NFData, Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool
Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr))
Monoid (Element (ViewsSet instr)) =>
ViewsSet instr -> Element (ViewsSet instr)
(Element (ViewsSet instr) ~ Bool) => ViewsSet instr -> Bool
ViewsSet instr -> Bool
ViewsSet instr -> Int
ViewsSet instr -> [Element (ViewsSet instr)]
ViewsSet instr -> Maybe (Element (ViewsSet instr))
(Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool
(Element (ViewsSet instr) -> Bool)
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
(Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
(ViewsSet instr -> [Element (ViewsSet instr)])
-> (ViewsSet instr -> Bool)
-> (forall b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b)
-> (forall b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b)
-> (forall b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b)
-> (ViewsSet instr -> Int)
-> (Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool)
-> (forall m.
Monoid m =>
(Element (ViewsSet instr) -> m) -> ViewsSet instr -> m)
-> (Monoid (Element (ViewsSet instr)) =>
ViewsSet instr -> Element (ViewsSet instr))
-> (forall b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b)
-> (Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool)
-> ((Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool)
-> ((Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool)
-> ((Element (ViewsSet instr) ~ Bool) => ViewsSet instr -> Bool)
-> ((Element (ViewsSet instr) ~ Bool) => ViewsSet instr -> Bool)
-> ((Element (ViewsSet instr) -> Bool)
-> ViewsSet instr -> Maybe (Element (ViewsSet instr)))
-> (ViewsSet instr -> Maybe (Element (ViewsSet instr)))
-> (Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr)))
-> (Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr)))
-> ((Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr)))
-> ((Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr)))
-> Container (ViewsSet instr)
forall instr.
Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool
forall instr.
Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr))
forall m.
Monoid m =>
(Element (ViewsSet instr) -> m) -> ViewsSet instr -> m
forall instr.
Monoid (Element (ViewsSet instr)) =>
ViewsSet instr -> Element (ViewsSet instr)
forall instr.
(Element (ViewsSet instr) ~ Bool) =>
ViewsSet instr -> Bool
forall instr. ViewsSet instr -> Bool
forall instr. ViewsSet instr -> Int
forall instr. ViewsSet instr -> [Element (ViewsSet instr)]
forall instr. ViewsSet instr -> Maybe (Element (ViewsSet instr))
forall t.
(t -> [Element t])
-> (t -> Bool)
-> (forall b. (Element t -> b -> b) -> b -> t -> b)
-> (forall b. (b -> Element t -> b) -> b -> t -> b)
-> (forall b. (b -> Element t -> b) -> b -> t -> b)
-> (t -> Int)
-> (Eq (Element t) => Element t -> t -> Bool)
-> (forall m. Monoid m => (Element t -> m) -> t -> m)
-> (Monoid (Element t) => t -> Element t)
-> (forall b. (Element t -> b -> b) -> b -> t -> b)
-> (Eq (Element t) => Element t -> t -> Bool)
-> ((Element t -> Bool) -> t -> Bool)
-> ((Element t -> Bool) -> t -> Bool)
-> ((Element t ~ Bool) => t -> Bool)
-> ((Element t ~ Bool) => t -> Bool)
-> ((Element t -> Bool) -> t -> Maybe (Element t))
-> (t -> Maybe (Element t))
-> (Ord (Element t) => t -> Maybe (Element t))
-> (Ord (Element t) => t -> Maybe (Element t))
-> ((Element t -> Element t -> Element t)
-> t -> Maybe (Element t))
-> ((Element t -> Element t -> Element t)
-> t -> Maybe (Element t))
-> Container t
forall b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b
forall instr.
(Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool
forall instr.
(Element (ViewsSet instr) -> Bool)
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
forall instr.
(Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
forall b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b
forall instr m.
Monoid m =>
(Element (ViewsSet instr) -> m) -> ViewsSet instr -> m
forall instr b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b
forall instr b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b
safeFoldl1 :: (Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
$csafeFoldl1 :: forall instr.
(Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
safeFoldr1 :: (Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
$csafeFoldr1 :: forall instr.
(Element (ViewsSet instr)
-> Element (ViewsSet instr) -> Element (ViewsSet instr))
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
safeMinimum :: Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr))
$csafeMinimum :: forall instr.
Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr))
safeMaximum :: Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr))
$csafeMaximum :: forall instr.
Ord (Element (ViewsSet instr)) =>
ViewsSet instr -> Maybe (Element (ViewsSet instr))
safeHead :: ViewsSet instr -> Maybe (Element (ViewsSet instr))
$csafeHead :: forall instr. ViewsSet instr -> Maybe (Element (ViewsSet instr))
find :: (Element (ViewsSet instr) -> Bool)
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
$cfind :: forall instr.
(Element (ViewsSet instr) -> Bool)
-> ViewsSet instr -> Maybe (Element (ViewsSet instr))
or :: (Element (ViewsSet instr) ~ Bool) => ViewsSet instr -> Bool
$cor :: forall instr.
(Element (ViewsSet instr) ~ Bool) =>
ViewsSet instr -> Bool
and :: (Element (ViewsSet instr) ~ Bool) => ViewsSet instr -> Bool
$cand :: forall instr.
(Element (ViewsSet instr) ~ Bool) =>
ViewsSet instr -> Bool
any :: (Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool
$cany :: forall instr.
(Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool
all :: (Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool
$call :: forall instr.
(Element (ViewsSet instr) -> Bool) -> ViewsSet instr -> Bool
notElem :: Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool
$cnotElem :: forall instr.
Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool
foldr' :: forall b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b
$cfoldr' :: forall instr b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b
fold :: Monoid (Element (ViewsSet instr)) =>
ViewsSet instr -> Element (ViewsSet instr)
$cfold :: forall instr.
Monoid (Element (ViewsSet instr)) =>
ViewsSet instr -> Element (ViewsSet instr)
foldMap :: forall m.
Monoid m =>
(Element (ViewsSet instr) -> m) -> ViewsSet instr -> m
$cfoldMap :: forall instr m.
Monoid m =>
(Element (ViewsSet instr) -> m) -> ViewsSet instr -> m
elem :: Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool
$celem :: forall instr.
Eq (Element (ViewsSet instr)) =>
Element (ViewsSet instr) -> ViewsSet instr -> Bool
length :: ViewsSet instr -> Int
$clength :: forall instr. ViewsSet instr -> Int
foldl' :: forall b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b
$cfoldl' :: forall instr b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b
foldl :: forall b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b
$cfoldl :: forall instr b.
(b -> Element (ViewsSet instr) -> b) -> b -> ViewsSet instr -> b
foldr :: forall b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b
$cfoldr :: forall instr b.
(Element (ViewsSet instr) -> b -> b) -> b -> ViewsSet instr -> b
null :: ViewsSet instr -> Bool
$cnull :: forall instr. ViewsSet instr -> Bool
toList :: ViewsSet instr -> [Element (ViewsSet instr)]
$ctoList :: forall instr. ViewsSet instr -> [Element (ViewsSet instr)]
Container)
deriving stock (ViewsSet instr -> ViewsSet instr -> Bool
(ViewsSet instr -> ViewsSet instr -> Bool)
-> (ViewsSet instr -> ViewsSet instr -> Bool)
-> Eq (ViewsSet instr)
forall instr. Eq instr => ViewsSet instr -> ViewsSet instr -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ViewsSet instr -> ViewsSet instr -> Bool
$c/= :: forall instr. Eq instr => ViewsSet instr -> ViewsSet instr -> Bool
== :: ViewsSet instr -> ViewsSet instr -> Bool
$c== :: forall instr. Eq instr => ViewsSet instr -> ViewsSet instr -> Bool
Eq, Int -> ViewsSet instr -> ShowS
[ViewsSet instr] -> ShowS
ViewsSet instr -> String
(Int -> ViewsSet instr -> ShowS)
-> (ViewsSet instr -> String)
-> ([ViewsSet instr] -> ShowS)
-> Show (ViewsSet instr)
forall instr. Show instr => Int -> ViewsSet instr -> ShowS
forall instr. Show instr => [ViewsSet instr] -> ShowS
forall instr. Show instr => ViewsSet instr -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ViewsSet instr] -> ShowS
$cshowList :: forall instr. Show instr => [ViewsSet instr] -> ShowS
show :: ViewsSet instr -> String
$cshow :: forall instr. Show instr => ViewsSet instr -> String
showsPrec :: Int -> ViewsSet instr -> ShowS
$cshowsPrec :: forall instr. Show instr => Int -> ViewsSet instr -> ShowS
Show, Typeable (ViewsSet instr)
Typeable (ViewsSet instr)
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ViewsSet instr -> c (ViewsSet instr))
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ViewsSet instr))
-> (ViewsSet instr -> Constr)
-> (ViewsSet instr -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ViewsSet instr)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ViewsSet instr)))
-> ((forall b. Data b => b -> b)
-> ViewsSet instr -> ViewsSet instr)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r)
-> (forall u.
(forall d. Data d => d -> u) -> ViewsSet instr -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> ViewsSet instr -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr))
-> Data (ViewsSet instr)
ViewsSet instr -> DataType
ViewsSet instr -> Constr
(forall b. Data b => b -> b) -> ViewsSet instr -> ViewsSet instr
forall {instr}. Data instr => Typeable (ViewsSet instr)
forall instr. Data instr => ViewsSet instr -> DataType
forall instr. Data instr => ViewsSet instr -> Constr
forall instr.
Data instr =>
(forall b. Data b => b -> b) -> ViewsSet instr -> ViewsSet instr
forall instr u.
Data instr =>
Int -> (forall d. Data d => d -> u) -> ViewsSet instr -> u
forall instr u.
Data instr =>
(forall d. Data d => d -> u) -> ViewsSet instr -> [u]
forall instr r r'.
Data instr =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
forall instr r r'.
Data instr =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
forall instr (m :: * -> *).
(Data instr, Monad m) =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
forall instr (m :: * -> *).
(Data instr, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
forall instr (c :: * -> *).
Data instr =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ViewsSet instr)
forall instr (c :: * -> *).
Data instr =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ViewsSet instr -> c (ViewsSet instr)
forall instr (t :: * -> *) (c :: * -> *).
(Data instr, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (ViewsSet instr))
forall instr (t :: * -> * -> *) (c :: * -> *).
(Data instr, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ViewsSet instr))
forall a.
Typeable a
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> ViewsSet instr -> u
forall u. (forall d. Data d => d -> u) -> ViewsSet instr -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ViewsSet instr)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ViewsSet instr -> c (ViewsSet instr)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ViewsSet instr))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ViewsSet instr))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
$cgmapMo :: forall instr (m :: * -> *).
(Data instr, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
$cgmapMp :: forall instr (m :: * -> *).
(Data instr, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
$cgmapM :: forall instr (m :: * -> *).
(Data instr, Monad m) =>
(forall d. Data d => d -> m d)
-> ViewsSet instr -> m (ViewsSet instr)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> ViewsSet instr -> u
$cgmapQi :: forall instr u.
Data instr =>
Int -> (forall d. Data d => d -> u) -> ViewsSet instr -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> ViewsSet instr -> [u]
$cgmapQ :: forall instr u.
Data instr =>
(forall d. Data d => d -> u) -> ViewsSet instr -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
$cgmapQr :: forall instr r r'.
Data instr =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
$cgmapQl :: forall instr r r'.
Data instr =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ViewsSet instr -> r
gmapT :: (forall b. Data b => b -> b) -> ViewsSet instr -> ViewsSet instr
$cgmapT :: forall instr.
Data instr =>
(forall b. Data b => b -> b) -> ViewsSet instr -> ViewsSet instr
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ViewsSet instr))
$cdataCast2 :: forall instr (t :: * -> * -> *) (c :: * -> *).
(Data instr, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ViewsSet instr))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ViewsSet instr))
$cdataCast1 :: forall instr (t :: * -> *) (c :: * -> *).
(Data instr, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (ViewsSet instr))
dataTypeOf :: ViewsSet instr -> DataType
$cdataTypeOf :: forall instr. Data instr => ViewsSet instr -> DataType
toConstr :: ViewsSet instr -> Constr
$ctoConstr :: forall instr. Data instr => ViewsSet instr -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ViewsSet instr)
$cgunfold :: forall instr (c :: * -> *).
Data instr =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ViewsSet instr)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ViewsSet instr -> c (ViewsSet instr)
$cgfoldl :: forall instr (c :: * -> *).
Data instr =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ViewsSet instr -> c (ViewsSet instr)
Data, (forall a b. (a -> b) -> ViewsSet a -> ViewsSet b)
-> (forall a b. a -> ViewsSet b -> ViewsSet a) -> Functor ViewsSet
forall a b. a -> ViewsSet b -> ViewsSet a
forall a b. (a -> b) -> ViewsSet a -> ViewsSet b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> ViewsSet b -> ViewsSet a
$c<$ :: forall a b. a -> ViewsSet b -> ViewsSet a
fmap :: forall a b. (a -> b) -> ViewsSet a -> ViewsSet b
$cfmap :: forall a b. (a -> b) -> ViewsSet a -> ViewsSet b
Functor)
mkViewsSet :: [View' instr] -> Either VS.ViewsSetError (ViewsSet instr)
mkViewsSet :: forall instr.
[View' instr] -> Either ViewsSetError (ViewsSet instr)
mkViewsSet = Either ViewsSetError (ViewsSetF (View' instr))
-> Either ViewsSetError (ViewsSet instr)
coerce (Either ViewsSetError (ViewsSetF (View' instr))
-> Either ViewsSetError (ViewsSet instr))
-> ([View' instr]
-> Either ViewsSetError (ViewsSetF (View' instr)))
-> [View' instr]
-> Either ViewsSetError (ViewsSet instr)
forall a b c. SuperComposition a b c => a -> b -> c
... (View' instr -> ViewName)
-> [View' instr] -> Either ViewsSetError (ViewsSetF (View' instr))
forall a.
(a -> ViewName) -> [a] -> Either ViewsSetError (ViewsSetF a)
VS.mkViewsSet View' instr -> ViewName
forall op. View' op -> ViewName
viewName
emptyViewsSet :: forall instr. ViewsSet instr
emptyViewsSet :: forall instr. ViewsSet instr
emptyViewsSet = ViewsSetF (View' instr) -> ViewsSet instr
coerce (ViewsSetF (View' instr) -> ViewsSet instr)
-> ViewsSetF (View' instr) -> ViewsSet instr
forall a b. (a -> b) -> a -> b
$ forall a. ViewsSetF a
VS.emptyViewsSet @(View' instr)
addViewToSet :: View' instr -> ViewsSet instr -> Either VS.ViewsSetError (ViewsSet instr)
addViewToSet :: forall instr.
View' instr
-> ViewsSet instr -> Either ViewsSetError (ViewsSet instr)
addViewToSet View' instr
x = (ViewsSetF (View' instr)
-> Either ViewsSetError (ViewsSetF (View' instr)))
-> ViewsSet instr -> Either ViewsSetError (ViewsSet instr)
coerce ((ViewsSetF (View' instr)
-> Either ViewsSetError (ViewsSetF (View' instr)))
-> ViewsSet instr -> Either ViewsSetError (ViewsSet instr))
-> (ViewsSetF (View' instr)
-> Either ViewsSetError (ViewsSetF (View' instr)))
-> ViewsSet instr
-> Either ViewsSetError (ViewsSet instr)
forall a b. (a -> b) -> a -> b
$ (View' instr -> ViewName)
-> View' instr
-> ViewsSetF (View' instr)
-> Either ViewsSetError (ViewsSetF (View' instr))
forall a.
(a -> ViewName)
-> a -> ViewsSetF a -> Either ViewsSetError (ViewsSetF a)
VS.addViewToSet View' instr -> ViewName
forall op. View' op -> ViewName
viewName View' instr
x
lookupView :: forall instr. ViewName -> ViewsSet instr -> Maybe (View' instr)
lookupView :: forall instr. ViewName -> ViewsSet instr -> Maybe (View' instr)
lookupView = (ViewsSetF (View' instr) -> Maybe (View' instr))
-> ViewsSet instr -> Maybe (View' instr)
coerce ((ViewsSetF (View' instr) -> Maybe (View' instr))
-> ViewsSet instr -> Maybe (View' instr))
-> (ViewName -> ViewsSetF (View' instr) -> Maybe (View' instr))
-> ViewName
-> ViewsSet instr
-> Maybe (View' instr)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ViewName -> ViewsSetF a -> Maybe a
VS.lookupView @(View' instr)
viewsSetNames :: forall instr. ViewsSet instr -> Set ViewName
viewsSetNames :: forall instr. ViewsSet instr -> Set ViewName
viewsSetNames = forall a. ViewsSetF a -> Set ViewName
VS.viewsSetNames @(View' instr) (ViewsSetF (View' instr) -> Set ViewName)
-> (ViewsSet instr -> ViewsSetF (View' instr))
-> ViewsSet instr
-> Set ViewName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ViewsSet instr -> ViewsSetF (View' instr)
coerce