-- File generated by the BNF Converter (bnfc 2.9.5).

{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE PatternSynonyms #-}

-- | The abstract syntax of language Syntax.

module Language.Rzk.Syntax.Abs where

import Prelude (String)
import qualified Prelude as C
  ( Eq, Ord, Show, Read
  , Functor, Foldable, Traversable
  , Int, Maybe(..)
  )
import qualified Data.String

import qualified Data.Data    as C (Data, Typeable)
import qualified GHC.Generics as C (Generic)

type Module = Module' BNFC'Position
data Module' a = Module a (LanguageDecl' a) [Command' a]
  deriving (Module' a -> Module' a -> Bool
(Module' a -> Module' a -> Bool)
-> (Module' a -> Module' a -> Bool) -> Eq (Module' a)
forall a. Eq a => Module' a -> Module' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Module' a -> Module' a -> Bool
== :: Module' a -> Module' a -> Bool
$c/= :: forall a. Eq a => Module' a -> Module' a -> Bool
/= :: Module' a -> Module' a -> Bool
C.Eq, Eq (Module' a)
Eq (Module' a) =>
(Module' a -> Module' a -> Ordering)
-> (Module' a -> Module' a -> Bool)
-> (Module' a -> Module' a -> Bool)
-> (Module' a -> Module' a -> Bool)
-> (Module' a -> Module' a -> Bool)
-> (Module' a -> Module' a -> Module' a)
-> (Module' a -> Module' a -> Module' a)
-> Ord (Module' a)
Module' a -> Module' a -> Bool
Module' a -> Module' a -> Ordering
Module' a -> Module' a -> Module' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Module' a)
forall a. Ord a => Module' a -> Module' a -> Bool
forall a. Ord a => Module' a -> Module' a -> Ordering
forall a. Ord a => Module' a -> Module' a -> Module' a
$ccompare :: forall a. Ord a => Module' a -> Module' a -> Ordering
compare :: Module' a -> Module' a -> Ordering
$c< :: forall a. Ord a => Module' a -> Module' a -> Bool
< :: Module' a -> Module' a -> Bool
$c<= :: forall a. Ord a => Module' a -> Module' a -> Bool
<= :: Module' a -> Module' a -> Bool
$c> :: forall a. Ord a => Module' a -> Module' a -> Bool
> :: Module' a -> Module' a -> Bool
$c>= :: forall a. Ord a => Module' a -> Module' a -> Bool
>= :: Module' a -> Module' a -> Bool
$cmax :: forall a. Ord a => Module' a -> Module' a -> Module' a
max :: Module' a -> Module' a -> Module' a
$cmin :: forall a. Ord a => Module' a -> Module' a -> Module' a
min :: Module' a -> Module' a -> Module' a
C.Ord, Int -> Module' a -> ShowS
[Module' a] -> ShowS
Module' a -> String
(Int -> Module' a -> ShowS)
-> (Module' a -> String)
-> ([Module' a] -> ShowS)
-> Show (Module' a)
forall a. Show a => Int -> Module' a -> ShowS
forall a. Show a => [Module' a] -> ShowS
forall a. Show a => Module' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Module' a -> ShowS
showsPrec :: Int -> Module' a -> ShowS
$cshow :: forall a. Show a => Module' a -> String
show :: Module' a -> String
$cshowList :: forall a. Show a => [Module' a] -> ShowS
showList :: [Module' a] -> ShowS
C.Show, ReadPrec [Module' a]
ReadPrec (Module' a)
Int -> ReadS (Module' a)
ReadS [Module' a]
(Int -> ReadS (Module' a))
-> ReadS [Module' a]
-> ReadPrec (Module' a)
-> ReadPrec [Module' a]
-> Read (Module' a)
forall a. Read a => ReadPrec [Module' a]
forall a. Read a => ReadPrec (Module' a)
forall a. Read a => Int -> ReadS (Module' a)
forall a. Read a => ReadS [Module' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Module' a)
readsPrec :: Int -> ReadS (Module' a)
$creadList :: forall a. Read a => ReadS [Module' a]
readList :: ReadS [Module' a]
$creadPrec :: forall a. Read a => ReadPrec (Module' a)
readPrec :: ReadPrec (Module' a)
$creadListPrec :: forall a. Read a => ReadPrec [Module' a]
readListPrec :: ReadPrec [Module' a]
C.Read, (forall a b. (a -> b) -> Module' a -> Module' b)
-> (forall a b. a -> Module' b -> Module' a) -> Functor Module'
forall a b. a -> Module' b -> Module' a
forall a b. (a -> b) -> Module' a -> Module' 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) -> Module' a -> Module' b
fmap :: forall a b. (a -> b) -> Module' a -> Module' b
$c<$ :: forall a b. a -> Module' b -> Module' a
<$ :: forall a b. a -> Module' b -> Module' a
C.Functor, (forall m. Monoid m => Module' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Module' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Module' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Module' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Module' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Module' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Module' a -> b)
-> (forall a. (a -> a -> a) -> Module' a -> a)
-> (forall a. (a -> a -> a) -> Module' a -> a)
-> (forall a. Module' a -> [a])
-> (forall a. Module' a -> Bool)
-> (forall a. Module' a -> Int)
-> (forall a. Eq a => a -> Module' a -> Bool)
-> (forall a. Ord a => Module' a -> a)
-> (forall a. Ord a => Module' a -> a)
-> (forall a. Num a => Module' a -> a)
-> (forall a. Num a => Module' a -> a)
-> Foldable Module'
forall a. Eq a => a -> Module' a -> Bool
forall a. Num a => Module' a -> a
forall a. Ord a => Module' a -> a
forall m. Monoid m => Module' m -> m
forall a. Module' a -> Bool
forall a. Module' a -> Int
forall a. Module' a -> [a]
forall a. (a -> a -> a) -> Module' a -> a
forall m a. Monoid m => (a -> m) -> Module' a -> m
forall b a. (b -> a -> b) -> b -> Module' a -> b
forall a b. (a -> b -> b) -> b -> Module' 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 => Module' m -> m
fold :: forall m. Monoid m => Module' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Module' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Module' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Module' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Module' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Module' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Module' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Module' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Module' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Module' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Module' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Module' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Module' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Module' a -> a
foldr1 :: forall a. (a -> a -> a) -> Module' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Module' a -> a
foldl1 :: forall a. (a -> a -> a) -> Module' a -> a
$ctoList :: forall a. Module' a -> [a]
toList :: forall a. Module' a -> [a]
$cnull :: forall a. Module' a -> Bool
null :: forall a. Module' a -> Bool
$clength :: forall a. Module' a -> Int
length :: forall a. Module' a -> Int
$celem :: forall a. Eq a => a -> Module' a -> Bool
elem :: forall a. Eq a => a -> Module' a -> Bool
$cmaximum :: forall a. Ord a => Module' a -> a
maximum :: forall a. Ord a => Module' a -> a
$cminimum :: forall a. Ord a => Module' a -> a
minimum :: forall a. Ord a => Module' a -> a
$csum :: forall a. Num a => Module' a -> a
sum :: forall a. Num a => Module' a -> a
$cproduct :: forall a. Num a => Module' a -> a
product :: forall a. Num a => Module' a -> a
C.Foldable, Functor Module'
Foldable Module'
(Functor Module', Foldable Module') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Module' a -> f (Module' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Module' (f a) -> f (Module' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Module' a -> m (Module' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    Module' (m a) -> m (Module' a))
-> Traversable Module'
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 => Module' (m a) -> m (Module' a)
forall (f :: * -> *) a.
Applicative f =>
Module' (f a) -> f (Module' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Module' a -> m (Module' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Module' a -> f (Module' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Module' a -> f (Module' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Module' a -> f (Module' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
Module' (f a) -> f (Module' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Module' (f a) -> f (Module' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Module' a -> m (Module' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Module' a -> m (Module' b)
$csequence :: forall (m :: * -> *) a. Monad m => Module' (m a) -> m (Module' a)
sequence :: forall (m :: * -> *) a. Monad m => Module' (m a) -> m (Module' a)
C.Traversable, Typeable (Module' a)
Typeable (Module' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Module' a -> c (Module' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Module' a))
-> (Module' a -> Constr)
-> (Module' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Module' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (Module' a)))
-> ((forall b. Data b => b -> b) -> Module' a -> Module' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Module' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Module' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> Module' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> Module' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Module' a -> m (Module' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Module' a -> m (Module' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Module' a -> m (Module' a))
-> Data (Module' a)
Module' a -> Constr
Module' a -> DataType
(forall b. Data b => b -> b) -> Module' a -> Module' a
forall a. Data a => Typeable (Module' a)
forall a. Data a => Module' a -> Constr
forall a. Data a => Module' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Module' a -> Module' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Module' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Module' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Module' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Module' a -> c (Module' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Module' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Module' a))
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) -> Module' a -> u
forall u. (forall d. Data d => d -> u) -> Module' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Module' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Module' a -> c (Module' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Module' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Module' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Module' a -> c (Module' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Module' a -> c (Module' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Module' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Module' a)
$ctoConstr :: forall a. Data a => Module' a -> Constr
toConstr :: Module' a -> Constr
$cdataTypeOf :: forall a. Data a => Module' a -> DataType
dataTypeOf :: Module' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Module' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Module' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Module' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Module' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Module' a -> Module' a
gmapT :: (forall b. Data b => b -> b) -> Module' a -> Module' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Module' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Module' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Module' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Module' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Module' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Module' a -> m (Module' a)
C.Data, C.Typeable, (forall x. Module' a -> Rep (Module' a) x)
-> (forall x. Rep (Module' a) x -> Module' a)
-> Generic (Module' a)
forall x. Rep (Module' a) x -> Module' a
forall x. Module' a -> Rep (Module' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Module' a) x -> Module' a
forall a x. Module' a -> Rep (Module' a) x
$cfrom :: forall a x. Module' a -> Rep (Module' a) x
from :: forall x. Module' a -> Rep (Module' a) x
$cto :: forall a x. Rep (Module' a) x -> Module' a
to :: forall x. Rep (Module' a) x -> Module' a
C.Generic)

type HoleIdent = HoleIdent' BNFC'Position
data HoleIdent' a = HoleIdent a HoleIdentToken
  deriving (HoleIdent' a -> HoleIdent' a -> Bool
(HoleIdent' a -> HoleIdent' a -> Bool)
-> (HoleIdent' a -> HoleIdent' a -> Bool) -> Eq (HoleIdent' a)
forall a. Eq a => HoleIdent' a -> HoleIdent' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => HoleIdent' a -> HoleIdent' a -> Bool
== :: HoleIdent' a -> HoleIdent' a -> Bool
$c/= :: forall a. Eq a => HoleIdent' a -> HoleIdent' a -> Bool
/= :: HoleIdent' a -> HoleIdent' a -> Bool
C.Eq, Eq (HoleIdent' a)
Eq (HoleIdent' a) =>
(HoleIdent' a -> HoleIdent' a -> Ordering)
-> (HoleIdent' a -> HoleIdent' a -> Bool)
-> (HoleIdent' a -> HoleIdent' a -> Bool)
-> (HoleIdent' a -> HoleIdent' a -> Bool)
-> (HoleIdent' a -> HoleIdent' a -> Bool)
-> (HoleIdent' a -> HoleIdent' a -> HoleIdent' a)
-> (HoleIdent' a -> HoleIdent' a -> HoleIdent' a)
-> Ord (HoleIdent' a)
HoleIdent' a -> HoleIdent' a -> Bool
HoleIdent' a -> HoleIdent' a -> Ordering
HoleIdent' a -> HoleIdent' a -> HoleIdent' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (HoleIdent' a)
forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Bool
forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Ordering
forall a. Ord a => HoleIdent' a -> HoleIdent' a -> HoleIdent' a
$ccompare :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Ordering
compare :: HoleIdent' a -> HoleIdent' a -> Ordering
$c< :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Bool
< :: HoleIdent' a -> HoleIdent' a -> Bool
$c<= :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Bool
<= :: HoleIdent' a -> HoleIdent' a -> Bool
$c> :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Bool
> :: HoleIdent' a -> HoleIdent' a -> Bool
$c>= :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> Bool
>= :: HoleIdent' a -> HoleIdent' a -> Bool
$cmax :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> HoleIdent' a
max :: HoleIdent' a -> HoleIdent' a -> HoleIdent' a
$cmin :: forall a. Ord a => HoleIdent' a -> HoleIdent' a -> HoleIdent' a
min :: HoleIdent' a -> HoleIdent' a -> HoleIdent' a
C.Ord, Int -> HoleIdent' a -> ShowS
[HoleIdent' a] -> ShowS
HoleIdent' a -> String
(Int -> HoleIdent' a -> ShowS)
-> (HoleIdent' a -> String)
-> ([HoleIdent' a] -> ShowS)
-> Show (HoleIdent' a)
forall a. Show a => Int -> HoleIdent' a -> ShowS
forall a. Show a => [HoleIdent' a] -> ShowS
forall a. Show a => HoleIdent' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> HoleIdent' a -> ShowS
showsPrec :: Int -> HoleIdent' a -> ShowS
$cshow :: forall a. Show a => HoleIdent' a -> String
show :: HoleIdent' a -> String
$cshowList :: forall a. Show a => [HoleIdent' a] -> ShowS
showList :: [HoleIdent' a] -> ShowS
C.Show, ReadPrec [HoleIdent' a]
ReadPrec (HoleIdent' a)
Int -> ReadS (HoleIdent' a)
ReadS [HoleIdent' a]
(Int -> ReadS (HoleIdent' a))
-> ReadS [HoleIdent' a]
-> ReadPrec (HoleIdent' a)
-> ReadPrec [HoleIdent' a]
-> Read (HoleIdent' a)
forall a. Read a => ReadPrec [HoleIdent' a]
forall a. Read a => ReadPrec (HoleIdent' a)
forall a. Read a => Int -> ReadS (HoleIdent' a)
forall a. Read a => ReadS [HoleIdent' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (HoleIdent' a)
readsPrec :: Int -> ReadS (HoleIdent' a)
$creadList :: forall a. Read a => ReadS [HoleIdent' a]
readList :: ReadS [HoleIdent' a]
$creadPrec :: forall a. Read a => ReadPrec (HoleIdent' a)
readPrec :: ReadPrec (HoleIdent' a)
$creadListPrec :: forall a. Read a => ReadPrec [HoleIdent' a]
readListPrec :: ReadPrec [HoleIdent' a]
C.Read, (forall a b. (a -> b) -> HoleIdent' a -> HoleIdent' b)
-> (forall a b. a -> HoleIdent' b -> HoleIdent' a)
-> Functor HoleIdent'
forall a b. a -> HoleIdent' b -> HoleIdent' a
forall a b. (a -> b) -> HoleIdent' a -> HoleIdent' 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) -> HoleIdent' a -> HoleIdent' b
fmap :: forall a b. (a -> b) -> HoleIdent' a -> HoleIdent' b
$c<$ :: forall a b. a -> HoleIdent' b -> HoleIdent' a
<$ :: forall a b. a -> HoleIdent' b -> HoleIdent' a
C.Functor, (forall m. Monoid m => HoleIdent' m -> m)
-> (forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m)
-> (forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m)
-> (forall a b. (a -> b -> b) -> b -> HoleIdent' a -> b)
-> (forall a b. (a -> b -> b) -> b -> HoleIdent' a -> b)
-> (forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b)
-> (forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b)
-> (forall a. (a -> a -> a) -> HoleIdent' a -> a)
-> (forall a. (a -> a -> a) -> HoleIdent' a -> a)
-> (forall a. HoleIdent' a -> [a])
-> (forall a. HoleIdent' a -> Bool)
-> (forall a. HoleIdent' a -> Int)
-> (forall a. Eq a => a -> HoleIdent' a -> Bool)
-> (forall a. Ord a => HoleIdent' a -> a)
-> (forall a. Ord a => HoleIdent' a -> a)
-> (forall a. Num a => HoleIdent' a -> a)
-> (forall a. Num a => HoleIdent' a -> a)
-> Foldable HoleIdent'
forall a. Eq a => a -> HoleIdent' a -> Bool
forall a. Num a => HoleIdent' a -> a
forall a. Ord a => HoleIdent' a -> a
forall m. Monoid m => HoleIdent' m -> m
forall a. HoleIdent' a -> Bool
forall a. HoleIdent' a -> Int
forall a. HoleIdent' a -> [a]
forall a. (a -> a -> a) -> HoleIdent' a -> a
forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m
forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b
forall a b. (a -> b -> b) -> b -> HoleIdent' 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 => HoleIdent' m -> m
fold :: forall m. Monoid m => HoleIdent' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> HoleIdent' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> HoleIdent' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> HoleIdent' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> HoleIdent' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> HoleIdent' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> HoleIdent' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> HoleIdent' a -> a
foldr1 :: forall a. (a -> a -> a) -> HoleIdent' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> HoleIdent' a -> a
foldl1 :: forall a. (a -> a -> a) -> HoleIdent' a -> a
$ctoList :: forall a. HoleIdent' a -> [a]
toList :: forall a. HoleIdent' a -> [a]
$cnull :: forall a. HoleIdent' a -> Bool
null :: forall a. HoleIdent' a -> Bool
$clength :: forall a. HoleIdent' a -> Int
length :: forall a. HoleIdent' a -> Int
$celem :: forall a. Eq a => a -> HoleIdent' a -> Bool
elem :: forall a. Eq a => a -> HoleIdent' a -> Bool
$cmaximum :: forall a. Ord a => HoleIdent' a -> a
maximum :: forall a. Ord a => HoleIdent' a -> a
$cminimum :: forall a. Ord a => HoleIdent' a -> a
minimum :: forall a. Ord a => HoleIdent' a -> a
$csum :: forall a. Num a => HoleIdent' a -> a
sum :: forall a. Num a => HoleIdent' a -> a
$cproduct :: forall a. Num a => HoleIdent' a -> a
product :: forall a. Num a => HoleIdent' a -> a
C.Foldable, Functor HoleIdent'
Foldable HoleIdent'
(Functor HoleIdent', Foldable HoleIdent') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> HoleIdent' a -> f (HoleIdent' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    HoleIdent' (f a) -> f (HoleIdent' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> HoleIdent' a -> m (HoleIdent' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    HoleIdent' (m a) -> m (HoleIdent' a))
-> Traversable HoleIdent'
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 =>
HoleIdent' (m a) -> m (HoleIdent' a)
forall (f :: * -> *) a.
Applicative f =>
HoleIdent' (f a) -> f (HoleIdent' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> HoleIdent' a -> m (HoleIdent' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> HoleIdent' a -> f (HoleIdent' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> HoleIdent' a -> f (HoleIdent' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> HoleIdent' a -> f (HoleIdent' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
HoleIdent' (f a) -> f (HoleIdent' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
HoleIdent' (f a) -> f (HoleIdent' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> HoleIdent' a -> m (HoleIdent' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> HoleIdent' a -> m (HoleIdent' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
HoleIdent' (m a) -> m (HoleIdent' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
HoleIdent' (m a) -> m (HoleIdent' a)
C.Traversable, Typeable (HoleIdent' a)
Typeable (HoleIdent' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> HoleIdent' a -> c (HoleIdent' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (HoleIdent' a))
-> (HoleIdent' a -> Constr)
-> (HoleIdent' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (HoleIdent' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (HoleIdent' a)))
-> ((forall b. Data b => b -> b) -> HoleIdent' a -> HoleIdent' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> HoleIdent' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> HoleIdent' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a))
-> Data (HoleIdent' a)
HoleIdent' a -> Constr
HoleIdent' a -> DataType
(forall b. Data b => b -> b) -> HoleIdent' a -> HoleIdent' a
forall a. Data a => Typeable (HoleIdent' a)
forall a. Data a => HoleIdent' a -> Constr
forall a. Data a => HoleIdent' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> HoleIdent' a -> HoleIdent' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> HoleIdent' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> HoleIdent' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (HoleIdent' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdent' a -> c (HoleIdent' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (HoleIdent' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (HoleIdent' a))
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) -> HoleIdent' a -> u
forall u. (forall d. Data d => d -> u) -> HoleIdent' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (HoleIdent' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdent' a -> c (HoleIdent' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (HoleIdent' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (HoleIdent' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdent' a -> c (HoleIdent' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdent' a -> c (HoleIdent' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (HoleIdent' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (HoleIdent' a)
$ctoConstr :: forall a. Data a => HoleIdent' a -> Constr
toConstr :: HoleIdent' a -> Constr
$cdataTypeOf :: forall a. Data a => HoleIdent' a -> DataType
dataTypeOf :: HoleIdent' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (HoleIdent' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (HoleIdent' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (HoleIdent' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (HoleIdent' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> HoleIdent' a -> HoleIdent' a
gmapT :: (forall b. Data b => b -> b) -> HoleIdent' a -> HoleIdent' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdent' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> HoleIdent' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> HoleIdent' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> HoleIdent' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> HoleIdent' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HoleIdent' a -> m (HoleIdent' a)
C.Data, C.Typeable, (forall x. HoleIdent' a -> Rep (HoleIdent' a) x)
-> (forall x. Rep (HoleIdent' a) x -> HoleIdent' a)
-> Generic (HoleIdent' a)
forall x. Rep (HoleIdent' a) x -> HoleIdent' a
forall x. HoleIdent' a -> Rep (HoleIdent' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (HoleIdent' a) x -> HoleIdent' a
forall a x. HoleIdent' a -> Rep (HoleIdent' a) x
$cfrom :: forall a x. HoleIdent' a -> Rep (HoleIdent' a) x
from :: forall x. HoleIdent' a -> Rep (HoleIdent' a) x
$cto :: forall a x. Rep (HoleIdent' a) x -> HoleIdent' a
to :: forall x. Rep (HoleIdent' a) x -> HoleIdent' a
C.Generic)

type VarIdent = VarIdent' BNFC'Position
data VarIdent' a = VarIdent a VarIdentToken
  deriving (VarIdent' a -> VarIdent' a -> Bool
(VarIdent' a -> VarIdent' a -> Bool)
-> (VarIdent' a -> VarIdent' a -> Bool) -> Eq (VarIdent' a)
forall a. Eq a => VarIdent' a -> VarIdent' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => VarIdent' a -> VarIdent' a -> Bool
== :: VarIdent' a -> VarIdent' a -> Bool
$c/= :: forall a. Eq a => VarIdent' a -> VarIdent' a -> Bool
/= :: VarIdent' a -> VarIdent' a -> Bool
C.Eq, Eq (VarIdent' a)
Eq (VarIdent' a) =>
(VarIdent' a -> VarIdent' a -> Ordering)
-> (VarIdent' a -> VarIdent' a -> Bool)
-> (VarIdent' a -> VarIdent' a -> Bool)
-> (VarIdent' a -> VarIdent' a -> Bool)
-> (VarIdent' a -> VarIdent' a -> Bool)
-> (VarIdent' a -> VarIdent' a -> VarIdent' a)
-> (VarIdent' a -> VarIdent' a -> VarIdent' a)
-> Ord (VarIdent' a)
VarIdent' a -> VarIdent' a -> Bool
VarIdent' a -> VarIdent' a -> Ordering
VarIdent' a -> VarIdent' a -> VarIdent' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (VarIdent' a)
forall a. Ord a => VarIdent' a -> VarIdent' a -> Bool
forall a. Ord a => VarIdent' a -> VarIdent' a -> Ordering
forall a. Ord a => VarIdent' a -> VarIdent' a -> VarIdent' a
$ccompare :: forall a. Ord a => VarIdent' a -> VarIdent' a -> Ordering
compare :: VarIdent' a -> VarIdent' a -> Ordering
$c< :: forall a. Ord a => VarIdent' a -> VarIdent' a -> Bool
< :: VarIdent' a -> VarIdent' a -> Bool
$c<= :: forall a. Ord a => VarIdent' a -> VarIdent' a -> Bool
<= :: VarIdent' a -> VarIdent' a -> Bool
$c> :: forall a. Ord a => VarIdent' a -> VarIdent' a -> Bool
> :: VarIdent' a -> VarIdent' a -> Bool
$c>= :: forall a. Ord a => VarIdent' a -> VarIdent' a -> Bool
>= :: VarIdent' a -> VarIdent' a -> Bool
$cmax :: forall a. Ord a => VarIdent' a -> VarIdent' a -> VarIdent' a
max :: VarIdent' a -> VarIdent' a -> VarIdent' a
$cmin :: forall a. Ord a => VarIdent' a -> VarIdent' a -> VarIdent' a
min :: VarIdent' a -> VarIdent' a -> VarIdent' a
C.Ord, Int -> VarIdent' a -> ShowS
[VarIdent' a] -> ShowS
VarIdent' a -> String
(Int -> VarIdent' a -> ShowS)
-> (VarIdent' a -> String)
-> ([VarIdent' a] -> ShowS)
-> Show (VarIdent' a)
forall a. Show a => Int -> VarIdent' a -> ShowS
forall a. Show a => [VarIdent' a] -> ShowS
forall a. Show a => VarIdent' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> VarIdent' a -> ShowS
showsPrec :: Int -> VarIdent' a -> ShowS
$cshow :: forall a. Show a => VarIdent' a -> String
show :: VarIdent' a -> String
$cshowList :: forall a. Show a => [VarIdent' a] -> ShowS
showList :: [VarIdent' a] -> ShowS
C.Show, ReadPrec [VarIdent' a]
ReadPrec (VarIdent' a)
Int -> ReadS (VarIdent' a)
ReadS [VarIdent' a]
(Int -> ReadS (VarIdent' a))
-> ReadS [VarIdent' a]
-> ReadPrec (VarIdent' a)
-> ReadPrec [VarIdent' a]
-> Read (VarIdent' a)
forall a. Read a => ReadPrec [VarIdent' a]
forall a. Read a => ReadPrec (VarIdent' a)
forall a. Read a => Int -> ReadS (VarIdent' a)
forall a. Read a => ReadS [VarIdent' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (VarIdent' a)
readsPrec :: Int -> ReadS (VarIdent' a)
$creadList :: forall a. Read a => ReadS [VarIdent' a]
readList :: ReadS [VarIdent' a]
$creadPrec :: forall a. Read a => ReadPrec (VarIdent' a)
readPrec :: ReadPrec (VarIdent' a)
$creadListPrec :: forall a. Read a => ReadPrec [VarIdent' a]
readListPrec :: ReadPrec [VarIdent' a]
C.Read, (forall a b. (a -> b) -> VarIdent' a -> VarIdent' b)
-> (forall a b. a -> VarIdent' b -> VarIdent' a)
-> Functor VarIdent'
forall a b. a -> VarIdent' b -> VarIdent' a
forall a b. (a -> b) -> VarIdent' a -> VarIdent' 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) -> VarIdent' a -> VarIdent' b
fmap :: forall a b. (a -> b) -> VarIdent' a -> VarIdent' b
$c<$ :: forall a b. a -> VarIdent' b -> VarIdent' a
<$ :: forall a b. a -> VarIdent' b -> VarIdent' a
C.Functor, (forall m. Monoid m => VarIdent' m -> m)
-> (forall m a. Monoid m => (a -> m) -> VarIdent' a -> m)
-> (forall m a. Monoid m => (a -> m) -> VarIdent' a -> m)
-> (forall a b. (a -> b -> b) -> b -> VarIdent' a -> b)
-> (forall a b. (a -> b -> b) -> b -> VarIdent' a -> b)
-> (forall b a. (b -> a -> b) -> b -> VarIdent' a -> b)
-> (forall b a. (b -> a -> b) -> b -> VarIdent' a -> b)
-> (forall a. (a -> a -> a) -> VarIdent' a -> a)
-> (forall a. (a -> a -> a) -> VarIdent' a -> a)
-> (forall a. VarIdent' a -> [a])
-> (forall a. VarIdent' a -> Bool)
-> (forall a. VarIdent' a -> Int)
-> (forall a. Eq a => a -> VarIdent' a -> Bool)
-> (forall a. Ord a => VarIdent' a -> a)
-> (forall a. Ord a => VarIdent' a -> a)
-> (forall a. Num a => VarIdent' a -> a)
-> (forall a. Num a => VarIdent' a -> a)
-> Foldable VarIdent'
forall a. Eq a => a -> VarIdent' a -> Bool
forall a. Num a => VarIdent' a -> a
forall a. Ord a => VarIdent' a -> a
forall m. Monoid m => VarIdent' m -> m
forall a. VarIdent' a -> Bool
forall a. VarIdent' a -> Int
forall a. VarIdent' a -> [a]
forall a. (a -> a -> a) -> VarIdent' a -> a
forall m a. Monoid m => (a -> m) -> VarIdent' a -> m
forall b a. (b -> a -> b) -> b -> VarIdent' a -> b
forall a b. (a -> b -> b) -> b -> VarIdent' 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 => VarIdent' m -> m
fold :: forall m. Monoid m => VarIdent' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> VarIdent' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> VarIdent' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> VarIdent' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> VarIdent' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> VarIdent' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> VarIdent' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> VarIdent' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> VarIdent' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> VarIdent' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> VarIdent' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> VarIdent' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> VarIdent' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> VarIdent' a -> a
foldr1 :: forall a. (a -> a -> a) -> VarIdent' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> VarIdent' a -> a
foldl1 :: forall a. (a -> a -> a) -> VarIdent' a -> a
$ctoList :: forall a. VarIdent' a -> [a]
toList :: forall a. VarIdent' a -> [a]
$cnull :: forall a. VarIdent' a -> Bool
null :: forall a. VarIdent' a -> Bool
$clength :: forall a. VarIdent' a -> Int
length :: forall a. VarIdent' a -> Int
$celem :: forall a. Eq a => a -> VarIdent' a -> Bool
elem :: forall a. Eq a => a -> VarIdent' a -> Bool
$cmaximum :: forall a. Ord a => VarIdent' a -> a
maximum :: forall a. Ord a => VarIdent' a -> a
$cminimum :: forall a. Ord a => VarIdent' a -> a
minimum :: forall a. Ord a => VarIdent' a -> a
$csum :: forall a. Num a => VarIdent' a -> a
sum :: forall a. Num a => VarIdent' a -> a
$cproduct :: forall a. Num a => VarIdent' a -> a
product :: forall a. Num a => VarIdent' a -> a
C.Foldable, Functor VarIdent'
Foldable VarIdent'
(Functor VarIdent', Foldable VarIdent') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> VarIdent' a -> f (VarIdent' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    VarIdent' (f a) -> f (VarIdent' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> VarIdent' a -> m (VarIdent' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    VarIdent' (m a) -> m (VarIdent' a))
-> Traversable VarIdent'
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 =>
VarIdent' (m a) -> m (VarIdent' a)
forall (f :: * -> *) a.
Applicative f =>
VarIdent' (f a) -> f (VarIdent' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> VarIdent' a -> m (VarIdent' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> VarIdent' a -> f (VarIdent' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> VarIdent' a -> f (VarIdent' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> VarIdent' a -> f (VarIdent' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
VarIdent' (f a) -> f (VarIdent' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
VarIdent' (f a) -> f (VarIdent' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> VarIdent' a -> m (VarIdent' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> VarIdent' a -> m (VarIdent' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
VarIdent' (m a) -> m (VarIdent' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
VarIdent' (m a) -> m (VarIdent' a)
C.Traversable, Typeable (VarIdent' a)
Typeable (VarIdent' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> VarIdent' a -> c (VarIdent' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (VarIdent' a))
-> (VarIdent' a -> Constr)
-> (VarIdent' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (VarIdent' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (VarIdent' a)))
-> ((forall b. Data b => b -> b) -> VarIdent' a -> VarIdent' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> VarIdent' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> VarIdent' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a))
-> Data (VarIdent' a)
VarIdent' a -> Constr
VarIdent' a -> DataType
(forall b. Data b => b -> b) -> VarIdent' a -> VarIdent' a
forall a. Data a => Typeable (VarIdent' a)
forall a. Data a => VarIdent' a -> Constr
forall a. Data a => VarIdent' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> VarIdent' a -> VarIdent' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> VarIdent' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> VarIdent' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VarIdent' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdent' a -> c (VarIdent' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (VarIdent' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VarIdent' a))
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) -> VarIdent' a -> u
forall u. (forall d. Data d => d -> u) -> VarIdent' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VarIdent' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdent' a -> c (VarIdent' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (VarIdent' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VarIdent' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdent' a -> c (VarIdent' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdent' a -> c (VarIdent' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VarIdent' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VarIdent' a)
$ctoConstr :: forall a. Data a => VarIdent' a -> Constr
toConstr :: VarIdent' a -> Constr
$cdataTypeOf :: forall a. Data a => VarIdent' a -> DataType
dataTypeOf :: VarIdent' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (VarIdent' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (VarIdent' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VarIdent' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VarIdent' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> VarIdent' a -> VarIdent' a
gmapT :: (forall b. Data b => b -> b) -> VarIdent' a -> VarIdent' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdent' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> VarIdent' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> VarIdent' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> VarIdent' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> VarIdent' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdent' a -> m (VarIdent' a)
C.Data, C.Typeable, (forall x. VarIdent' a -> Rep (VarIdent' a) x)
-> (forall x. Rep (VarIdent' a) x -> VarIdent' a)
-> Generic (VarIdent' a)
forall x. Rep (VarIdent' a) x -> VarIdent' a
forall x. VarIdent' a -> Rep (VarIdent' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (VarIdent' a) x -> VarIdent' a
forall a x. VarIdent' a -> Rep (VarIdent' a) x
$cfrom :: forall a x. VarIdent' a -> Rep (VarIdent' a) x
from :: forall x. VarIdent' a -> Rep (VarIdent' a) x
$cto :: forall a x. Rep (VarIdent' a) x -> VarIdent' a
to :: forall x. Rep (VarIdent' a) x -> VarIdent' a
C.Generic)

type LanguageDecl = LanguageDecl' BNFC'Position
data LanguageDecl' a = LanguageDecl a (Language' a)
  deriving (LanguageDecl' a -> LanguageDecl' a -> Bool
(LanguageDecl' a -> LanguageDecl' a -> Bool)
-> (LanguageDecl' a -> LanguageDecl' a -> Bool)
-> Eq (LanguageDecl' a)
forall a. Eq a => LanguageDecl' a -> LanguageDecl' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => LanguageDecl' a -> LanguageDecl' a -> Bool
== :: LanguageDecl' a -> LanguageDecl' a -> Bool
$c/= :: forall a. Eq a => LanguageDecl' a -> LanguageDecl' a -> Bool
/= :: LanguageDecl' a -> LanguageDecl' a -> Bool
C.Eq, Eq (LanguageDecl' a)
Eq (LanguageDecl' a) =>
(LanguageDecl' a -> LanguageDecl' a -> Ordering)
-> (LanguageDecl' a -> LanguageDecl' a -> Bool)
-> (LanguageDecl' a -> LanguageDecl' a -> Bool)
-> (LanguageDecl' a -> LanguageDecl' a -> Bool)
-> (LanguageDecl' a -> LanguageDecl' a -> Bool)
-> (LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a)
-> (LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a)
-> Ord (LanguageDecl' a)
LanguageDecl' a -> LanguageDecl' a -> Bool
LanguageDecl' a -> LanguageDecl' a -> Ordering
LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (LanguageDecl' a)
forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Bool
forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Ordering
forall a.
Ord a =>
LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a
$ccompare :: forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Ordering
compare :: LanguageDecl' a -> LanguageDecl' a -> Ordering
$c< :: forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Bool
< :: LanguageDecl' a -> LanguageDecl' a -> Bool
$c<= :: forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Bool
<= :: LanguageDecl' a -> LanguageDecl' a -> Bool
$c> :: forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Bool
> :: LanguageDecl' a -> LanguageDecl' a -> Bool
$c>= :: forall a. Ord a => LanguageDecl' a -> LanguageDecl' a -> Bool
>= :: LanguageDecl' a -> LanguageDecl' a -> Bool
$cmax :: forall a.
Ord a =>
LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a
max :: LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a
$cmin :: forall a.
Ord a =>
LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a
min :: LanguageDecl' a -> LanguageDecl' a -> LanguageDecl' a
C.Ord, Int -> LanguageDecl' a -> ShowS
[LanguageDecl' a] -> ShowS
LanguageDecl' a -> String
(Int -> LanguageDecl' a -> ShowS)
-> (LanguageDecl' a -> String)
-> ([LanguageDecl' a] -> ShowS)
-> Show (LanguageDecl' a)
forall a. Show a => Int -> LanguageDecl' a -> ShowS
forall a. Show a => [LanguageDecl' a] -> ShowS
forall a. Show a => LanguageDecl' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> LanguageDecl' a -> ShowS
showsPrec :: Int -> LanguageDecl' a -> ShowS
$cshow :: forall a. Show a => LanguageDecl' a -> String
show :: LanguageDecl' a -> String
$cshowList :: forall a. Show a => [LanguageDecl' a] -> ShowS
showList :: [LanguageDecl' a] -> ShowS
C.Show, ReadPrec [LanguageDecl' a]
ReadPrec (LanguageDecl' a)
Int -> ReadS (LanguageDecl' a)
ReadS [LanguageDecl' a]
(Int -> ReadS (LanguageDecl' a))
-> ReadS [LanguageDecl' a]
-> ReadPrec (LanguageDecl' a)
-> ReadPrec [LanguageDecl' a]
-> Read (LanguageDecl' a)
forall a. Read a => ReadPrec [LanguageDecl' a]
forall a. Read a => ReadPrec (LanguageDecl' a)
forall a. Read a => Int -> ReadS (LanguageDecl' a)
forall a. Read a => ReadS [LanguageDecl' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (LanguageDecl' a)
readsPrec :: Int -> ReadS (LanguageDecl' a)
$creadList :: forall a. Read a => ReadS [LanguageDecl' a]
readList :: ReadS [LanguageDecl' a]
$creadPrec :: forall a. Read a => ReadPrec (LanguageDecl' a)
readPrec :: ReadPrec (LanguageDecl' a)
$creadListPrec :: forall a. Read a => ReadPrec [LanguageDecl' a]
readListPrec :: ReadPrec [LanguageDecl' a]
C.Read, (forall a b. (a -> b) -> LanguageDecl' a -> LanguageDecl' b)
-> (forall a b. a -> LanguageDecl' b -> LanguageDecl' a)
-> Functor LanguageDecl'
forall a b. a -> LanguageDecl' b -> LanguageDecl' a
forall a b. (a -> b) -> LanguageDecl' a -> LanguageDecl' 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) -> LanguageDecl' a -> LanguageDecl' b
fmap :: forall a b. (a -> b) -> LanguageDecl' a -> LanguageDecl' b
$c<$ :: forall a b. a -> LanguageDecl' b -> LanguageDecl' a
<$ :: forall a b. a -> LanguageDecl' b -> LanguageDecl' a
C.Functor, (forall m. Monoid m => LanguageDecl' m -> m)
-> (forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m)
-> (forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m)
-> (forall a b. (a -> b -> b) -> b -> LanguageDecl' a -> b)
-> (forall a b. (a -> b -> b) -> b -> LanguageDecl' a -> b)
-> (forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b)
-> (forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b)
-> (forall a. (a -> a -> a) -> LanguageDecl' a -> a)
-> (forall a. (a -> a -> a) -> LanguageDecl' a -> a)
-> (forall a. LanguageDecl' a -> [a])
-> (forall a. LanguageDecl' a -> Bool)
-> (forall a. LanguageDecl' a -> Int)
-> (forall a. Eq a => a -> LanguageDecl' a -> Bool)
-> (forall a. Ord a => LanguageDecl' a -> a)
-> (forall a. Ord a => LanguageDecl' a -> a)
-> (forall a. Num a => LanguageDecl' a -> a)
-> (forall a. Num a => LanguageDecl' a -> a)
-> Foldable LanguageDecl'
forall a. Eq a => a -> LanguageDecl' a -> Bool
forall a. Num a => LanguageDecl' a -> a
forall a. Ord a => LanguageDecl' a -> a
forall m. Monoid m => LanguageDecl' m -> m
forall a. LanguageDecl' a -> Bool
forall a. LanguageDecl' a -> Int
forall a. LanguageDecl' a -> [a]
forall a. (a -> a -> a) -> LanguageDecl' a -> a
forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m
forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b
forall a b. (a -> b -> b) -> b -> LanguageDecl' 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 => LanguageDecl' m -> m
fold :: forall m. Monoid m => LanguageDecl' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> LanguageDecl' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> LanguageDecl' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> LanguageDecl' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> LanguageDecl' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> LanguageDecl' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> LanguageDecl' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> LanguageDecl' a -> a
foldr1 :: forall a. (a -> a -> a) -> LanguageDecl' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> LanguageDecl' a -> a
foldl1 :: forall a. (a -> a -> a) -> LanguageDecl' a -> a
$ctoList :: forall a. LanguageDecl' a -> [a]
toList :: forall a. LanguageDecl' a -> [a]
$cnull :: forall a. LanguageDecl' a -> Bool
null :: forall a. LanguageDecl' a -> Bool
$clength :: forall a. LanguageDecl' a -> Int
length :: forall a. LanguageDecl' a -> Int
$celem :: forall a. Eq a => a -> LanguageDecl' a -> Bool
elem :: forall a. Eq a => a -> LanguageDecl' a -> Bool
$cmaximum :: forall a. Ord a => LanguageDecl' a -> a
maximum :: forall a. Ord a => LanguageDecl' a -> a
$cminimum :: forall a. Ord a => LanguageDecl' a -> a
minimum :: forall a. Ord a => LanguageDecl' a -> a
$csum :: forall a. Num a => LanguageDecl' a -> a
sum :: forall a. Num a => LanguageDecl' a -> a
$cproduct :: forall a. Num a => LanguageDecl' a -> a
product :: forall a. Num a => LanguageDecl' a -> a
C.Foldable, Functor LanguageDecl'
Foldable LanguageDecl'
(Functor LanguageDecl', Foldable LanguageDecl') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> LanguageDecl' a -> f (LanguageDecl' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    LanguageDecl' (f a) -> f (LanguageDecl' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> LanguageDecl' a -> m (LanguageDecl' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    LanguageDecl' (m a) -> m (LanguageDecl' a))
-> Traversable LanguageDecl'
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 =>
LanguageDecl' (m a) -> m (LanguageDecl' a)
forall (f :: * -> *) a.
Applicative f =>
LanguageDecl' (f a) -> f (LanguageDecl' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> LanguageDecl' a -> m (LanguageDecl' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> LanguageDecl' a -> f (LanguageDecl' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> LanguageDecl' a -> f (LanguageDecl' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> LanguageDecl' a -> f (LanguageDecl' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
LanguageDecl' (f a) -> f (LanguageDecl' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
LanguageDecl' (f a) -> f (LanguageDecl' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> LanguageDecl' a -> m (LanguageDecl' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> LanguageDecl' a -> m (LanguageDecl' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
LanguageDecl' (m a) -> m (LanguageDecl' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
LanguageDecl' (m a) -> m (LanguageDecl' a)
C.Traversable, Typeable (LanguageDecl' a)
Typeable (LanguageDecl' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> LanguageDecl' a -> c (LanguageDecl' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (LanguageDecl' a))
-> (LanguageDecl' a -> Constr)
-> (LanguageDecl' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (LanguageDecl' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (LanguageDecl' a)))
-> ((forall b. Data b => b -> b)
    -> LanguageDecl' a -> LanguageDecl' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> LanguageDecl' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> LanguageDecl' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> LanguageDecl' a -> m (LanguageDecl' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LanguageDecl' a -> m (LanguageDecl' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LanguageDecl' a -> m (LanguageDecl' a))
-> Data (LanguageDecl' a)
LanguageDecl' a -> Constr
LanguageDecl' a -> DataType
(forall b. Data b => b -> b) -> LanguageDecl' a -> LanguageDecl' a
forall a. Data a => Typeable (LanguageDecl' a)
forall a. Data a => LanguageDecl' a -> Constr
forall a. Data a => LanguageDecl' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> LanguageDecl' a -> LanguageDecl' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> LanguageDecl' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> LanguageDecl' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (LanguageDecl' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> LanguageDecl' a -> c (LanguageDecl' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (LanguageDecl' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (LanguageDecl' a))
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) -> LanguageDecl' a -> u
forall u. (forall d. Data d => d -> u) -> LanguageDecl' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (LanguageDecl' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> LanguageDecl' a -> c (LanguageDecl' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (LanguageDecl' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (LanguageDecl' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> LanguageDecl' a -> c (LanguageDecl' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> LanguageDecl' a -> c (LanguageDecl' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (LanguageDecl' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (LanguageDecl' a)
$ctoConstr :: forall a. Data a => LanguageDecl' a -> Constr
toConstr :: LanguageDecl' a -> Constr
$cdataTypeOf :: forall a. Data a => LanguageDecl' a -> DataType
dataTypeOf :: LanguageDecl' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (LanguageDecl' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (LanguageDecl' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (LanguageDecl' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (LanguageDecl' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> LanguageDecl' a -> LanguageDecl' a
gmapT :: (forall b. Data b => b -> b) -> LanguageDecl' a -> LanguageDecl' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> LanguageDecl' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> LanguageDecl' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> LanguageDecl' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> LanguageDecl' a -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> LanguageDecl' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> LanguageDecl' a -> m (LanguageDecl' a)
C.Data, C.Typeable, (forall x. LanguageDecl' a -> Rep (LanguageDecl' a) x)
-> (forall x. Rep (LanguageDecl' a) x -> LanguageDecl' a)
-> Generic (LanguageDecl' a)
forall x. Rep (LanguageDecl' a) x -> LanguageDecl' a
forall x. LanguageDecl' a -> Rep (LanguageDecl' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (LanguageDecl' a) x -> LanguageDecl' a
forall a x. LanguageDecl' a -> Rep (LanguageDecl' a) x
$cfrom :: forall a x. LanguageDecl' a -> Rep (LanguageDecl' a) x
from :: forall x. LanguageDecl' a -> Rep (LanguageDecl' a) x
$cto :: forall a x. Rep (LanguageDecl' a) x -> LanguageDecl' a
to :: forall x. Rep (LanguageDecl' a) x -> LanguageDecl' a
C.Generic)

type Language = Language' BNFC'Position
data Language' a = Rzk1 a
  deriving (Language' a -> Language' a -> Bool
(Language' a -> Language' a -> Bool)
-> (Language' a -> Language' a -> Bool) -> Eq (Language' a)
forall a. Eq a => Language' a -> Language' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Language' a -> Language' a -> Bool
== :: Language' a -> Language' a -> Bool
$c/= :: forall a. Eq a => Language' a -> Language' a -> Bool
/= :: Language' a -> Language' a -> Bool
C.Eq, Eq (Language' a)
Eq (Language' a) =>
(Language' a -> Language' a -> Ordering)
-> (Language' a -> Language' a -> Bool)
-> (Language' a -> Language' a -> Bool)
-> (Language' a -> Language' a -> Bool)
-> (Language' a -> Language' a -> Bool)
-> (Language' a -> Language' a -> Language' a)
-> (Language' a -> Language' a -> Language' a)
-> Ord (Language' a)
Language' a -> Language' a -> Bool
Language' a -> Language' a -> Ordering
Language' a -> Language' a -> Language' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Language' a)
forall a. Ord a => Language' a -> Language' a -> Bool
forall a. Ord a => Language' a -> Language' a -> Ordering
forall a. Ord a => Language' a -> Language' a -> Language' a
$ccompare :: forall a. Ord a => Language' a -> Language' a -> Ordering
compare :: Language' a -> Language' a -> Ordering
$c< :: forall a. Ord a => Language' a -> Language' a -> Bool
< :: Language' a -> Language' a -> Bool
$c<= :: forall a. Ord a => Language' a -> Language' a -> Bool
<= :: Language' a -> Language' a -> Bool
$c> :: forall a. Ord a => Language' a -> Language' a -> Bool
> :: Language' a -> Language' a -> Bool
$c>= :: forall a. Ord a => Language' a -> Language' a -> Bool
>= :: Language' a -> Language' a -> Bool
$cmax :: forall a. Ord a => Language' a -> Language' a -> Language' a
max :: Language' a -> Language' a -> Language' a
$cmin :: forall a. Ord a => Language' a -> Language' a -> Language' a
min :: Language' a -> Language' a -> Language' a
C.Ord, Int -> Language' a -> ShowS
[Language' a] -> ShowS
Language' a -> String
(Int -> Language' a -> ShowS)
-> (Language' a -> String)
-> ([Language' a] -> ShowS)
-> Show (Language' a)
forall a. Show a => Int -> Language' a -> ShowS
forall a. Show a => [Language' a] -> ShowS
forall a. Show a => Language' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Language' a -> ShowS
showsPrec :: Int -> Language' a -> ShowS
$cshow :: forall a. Show a => Language' a -> String
show :: Language' a -> String
$cshowList :: forall a. Show a => [Language' a] -> ShowS
showList :: [Language' a] -> ShowS
C.Show, ReadPrec [Language' a]
ReadPrec (Language' a)
Int -> ReadS (Language' a)
ReadS [Language' a]
(Int -> ReadS (Language' a))
-> ReadS [Language' a]
-> ReadPrec (Language' a)
-> ReadPrec [Language' a]
-> Read (Language' a)
forall a. Read a => ReadPrec [Language' a]
forall a. Read a => ReadPrec (Language' a)
forall a. Read a => Int -> ReadS (Language' a)
forall a. Read a => ReadS [Language' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Language' a)
readsPrec :: Int -> ReadS (Language' a)
$creadList :: forall a. Read a => ReadS [Language' a]
readList :: ReadS [Language' a]
$creadPrec :: forall a. Read a => ReadPrec (Language' a)
readPrec :: ReadPrec (Language' a)
$creadListPrec :: forall a. Read a => ReadPrec [Language' a]
readListPrec :: ReadPrec [Language' a]
C.Read, (forall a b. (a -> b) -> Language' a -> Language' b)
-> (forall a b. a -> Language' b -> Language' a)
-> Functor Language'
forall a b. a -> Language' b -> Language' a
forall a b. (a -> b) -> Language' a -> Language' 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) -> Language' a -> Language' b
fmap :: forall a b. (a -> b) -> Language' a -> Language' b
$c<$ :: forall a b. a -> Language' b -> Language' a
<$ :: forall a b. a -> Language' b -> Language' a
C.Functor, (forall m. Monoid m => Language' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Language' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Language' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Language' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Language' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Language' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Language' a -> b)
-> (forall a. (a -> a -> a) -> Language' a -> a)
-> (forall a. (a -> a -> a) -> Language' a -> a)
-> (forall a. Language' a -> [a])
-> (forall a. Language' a -> Bool)
-> (forall a. Language' a -> Int)
-> (forall a. Eq a => a -> Language' a -> Bool)
-> (forall a. Ord a => Language' a -> a)
-> (forall a. Ord a => Language' a -> a)
-> (forall a. Num a => Language' a -> a)
-> (forall a. Num a => Language' a -> a)
-> Foldable Language'
forall a. Eq a => a -> Language' a -> Bool
forall a. Num a => Language' a -> a
forall a. Ord a => Language' a -> a
forall m. Monoid m => Language' m -> m
forall a. Language' a -> Bool
forall a. Language' a -> Int
forall a. Language' a -> [a]
forall a. (a -> a -> a) -> Language' a -> a
forall m a. Monoid m => (a -> m) -> Language' a -> m
forall b a. (b -> a -> b) -> b -> Language' a -> b
forall a b. (a -> b -> b) -> b -> Language' 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 => Language' m -> m
fold :: forall m. Monoid m => Language' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Language' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Language' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Language' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Language' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Language' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Language' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Language' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Language' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Language' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Language' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Language' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Language' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Language' a -> a
foldr1 :: forall a. (a -> a -> a) -> Language' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Language' a -> a
foldl1 :: forall a. (a -> a -> a) -> Language' a -> a
$ctoList :: forall a. Language' a -> [a]
toList :: forall a. Language' a -> [a]
$cnull :: forall a. Language' a -> Bool
null :: forall a. Language' a -> Bool
$clength :: forall a. Language' a -> Int
length :: forall a. Language' a -> Int
$celem :: forall a. Eq a => a -> Language' a -> Bool
elem :: forall a. Eq a => a -> Language' a -> Bool
$cmaximum :: forall a. Ord a => Language' a -> a
maximum :: forall a. Ord a => Language' a -> a
$cminimum :: forall a. Ord a => Language' a -> a
minimum :: forall a. Ord a => Language' a -> a
$csum :: forall a. Num a => Language' a -> a
sum :: forall a. Num a => Language' a -> a
$cproduct :: forall a. Num a => Language' a -> a
product :: forall a. Num a => Language' a -> a
C.Foldable, Functor Language'
Foldable Language'
(Functor Language', Foldable Language') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Language' a -> f (Language' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Language' (f a) -> f (Language' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Language' a -> m (Language' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    Language' (m a) -> m (Language' a))
-> Traversable Language'
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 =>
Language' (m a) -> m (Language' a)
forall (f :: * -> *) a.
Applicative f =>
Language' (f a) -> f (Language' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Language' a -> m (Language' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Language' a -> f (Language' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Language' a -> f (Language' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Language' a -> f (Language' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
Language' (f a) -> f (Language' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Language' (f a) -> f (Language' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Language' a -> m (Language' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Language' a -> m (Language' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
Language' (m a) -> m (Language' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
Language' (m a) -> m (Language' a)
C.Traversable, Typeable (Language' a)
Typeable (Language' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Language' a -> c (Language' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Language' a))
-> (Language' a -> Constr)
-> (Language' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Language' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (Language' a)))
-> ((forall b. Data b => b -> b) -> Language' a -> Language' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Language' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Language' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> Language' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> Language' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Language' a -> m (Language' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Language' a -> m (Language' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Language' a -> m (Language' a))
-> Data (Language' a)
Language' a -> Constr
Language' a -> DataType
(forall b. Data b => b -> b) -> Language' a -> Language' a
forall a. Data a => Typeable (Language' a)
forall a. Data a => Language' a -> Constr
forall a. Data a => Language' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Language' a -> Language' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Language' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Language' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Language' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language' a -> c (Language' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Language' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Language' a))
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) -> Language' a -> u
forall u. (forall d. Data d => d -> u) -> Language' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Language' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language' a -> c (Language' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Language' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Language' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language' a -> c (Language' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language' a -> c (Language' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Language' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Language' a)
$ctoConstr :: forall a. Data a => Language' a -> Constr
toConstr :: Language' a -> Constr
$cdataTypeOf :: forall a. Data a => Language' a -> DataType
dataTypeOf :: Language' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Language' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Language' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Language' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Language' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Language' a -> Language' a
gmapT :: (forall b. Data b => b -> b) -> Language' a -> Language' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Language' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Language' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Language' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Language' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language' a -> m (Language' a)
C.Data, C.Typeable, (forall x. Language' a -> Rep (Language' a) x)
-> (forall x. Rep (Language' a) x -> Language' a)
-> Generic (Language' a)
forall x. Rep (Language' a) x -> Language' a
forall x. Language' a -> Rep (Language' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Language' a) x -> Language' a
forall a x. Language' a -> Rep (Language' a) x
$cfrom :: forall a x. Language' a -> Rep (Language' a) x
from :: forall x. Language' a -> Rep (Language' a) x
$cto :: forall a x. Rep (Language' a) x -> Language' a
to :: forall x. Rep (Language' a) x -> Language' a
C.Generic)

type Command = Command' BNFC'Position
data Command' a
    = CommandSetOption a String String
    | CommandUnsetOption a String
    | CommandCheck a (Term' a) (Term' a)
    | CommandCompute a (Term' a)
    | CommandComputeWHNF a (Term' a)
    | CommandComputeNF a (Term' a)
    | CommandPostulate a (VarIdent' a) (DeclUsedVars' a) [Param' a] (Term' a)
    | CommandAssume a [VarIdent' a] (Term' a)
    | CommandSection a (SectionName' a)
    | CommandSectionEnd a (SectionName' a)
    | CommandDefine a (VarIdent' a) (DeclUsedVars' a) [Param' a] (Term' a) (Term' a)
  deriving (Command' a -> Command' a -> Bool
(Command' a -> Command' a -> Bool)
-> (Command' a -> Command' a -> Bool) -> Eq (Command' a)
forall a. Eq a => Command' a -> Command' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Command' a -> Command' a -> Bool
== :: Command' a -> Command' a -> Bool
$c/= :: forall a. Eq a => Command' a -> Command' a -> Bool
/= :: Command' a -> Command' a -> Bool
C.Eq, Eq (Command' a)
Eq (Command' a) =>
(Command' a -> Command' a -> Ordering)
-> (Command' a -> Command' a -> Bool)
-> (Command' a -> Command' a -> Bool)
-> (Command' a -> Command' a -> Bool)
-> (Command' a -> Command' a -> Bool)
-> (Command' a -> Command' a -> Command' a)
-> (Command' a -> Command' a -> Command' a)
-> Ord (Command' a)
Command' a -> Command' a -> Bool
Command' a -> Command' a -> Ordering
Command' a -> Command' a -> Command' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Command' a)
forall a. Ord a => Command' a -> Command' a -> Bool
forall a. Ord a => Command' a -> Command' a -> Ordering
forall a. Ord a => Command' a -> Command' a -> Command' a
$ccompare :: forall a. Ord a => Command' a -> Command' a -> Ordering
compare :: Command' a -> Command' a -> Ordering
$c< :: forall a. Ord a => Command' a -> Command' a -> Bool
< :: Command' a -> Command' a -> Bool
$c<= :: forall a. Ord a => Command' a -> Command' a -> Bool
<= :: Command' a -> Command' a -> Bool
$c> :: forall a. Ord a => Command' a -> Command' a -> Bool
> :: Command' a -> Command' a -> Bool
$c>= :: forall a. Ord a => Command' a -> Command' a -> Bool
>= :: Command' a -> Command' a -> Bool
$cmax :: forall a. Ord a => Command' a -> Command' a -> Command' a
max :: Command' a -> Command' a -> Command' a
$cmin :: forall a. Ord a => Command' a -> Command' a -> Command' a
min :: Command' a -> Command' a -> Command' a
C.Ord, Int -> Command' a -> ShowS
[Command' a] -> ShowS
Command' a -> String
(Int -> Command' a -> ShowS)
-> (Command' a -> String)
-> ([Command' a] -> ShowS)
-> Show (Command' a)
forall a. Show a => Int -> Command' a -> ShowS
forall a. Show a => [Command' a] -> ShowS
forall a. Show a => Command' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Command' a -> ShowS
showsPrec :: Int -> Command' a -> ShowS
$cshow :: forall a. Show a => Command' a -> String
show :: Command' a -> String
$cshowList :: forall a. Show a => [Command' a] -> ShowS
showList :: [Command' a] -> ShowS
C.Show, ReadPrec [Command' a]
ReadPrec (Command' a)
Int -> ReadS (Command' a)
ReadS [Command' a]
(Int -> ReadS (Command' a))
-> ReadS [Command' a]
-> ReadPrec (Command' a)
-> ReadPrec [Command' a]
-> Read (Command' a)
forall a. Read a => ReadPrec [Command' a]
forall a. Read a => ReadPrec (Command' a)
forall a. Read a => Int -> ReadS (Command' a)
forall a. Read a => ReadS [Command' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Command' a)
readsPrec :: Int -> ReadS (Command' a)
$creadList :: forall a. Read a => ReadS [Command' a]
readList :: ReadS [Command' a]
$creadPrec :: forall a. Read a => ReadPrec (Command' a)
readPrec :: ReadPrec (Command' a)
$creadListPrec :: forall a. Read a => ReadPrec [Command' a]
readListPrec :: ReadPrec [Command' a]
C.Read, (forall a b. (a -> b) -> Command' a -> Command' b)
-> (forall a b. a -> Command' b -> Command' a) -> Functor Command'
forall a b. a -> Command' b -> Command' a
forall a b. (a -> b) -> Command' a -> Command' 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) -> Command' a -> Command' b
fmap :: forall a b. (a -> b) -> Command' a -> Command' b
$c<$ :: forall a b. a -> Command' b -> Command' a
<$ :: forall a b. a -> Command' b -> Command' a
C.Functor, (forall m. Monoid m => Command' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Command' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Command' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Command' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Command' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Command' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Command' a -> b)
-> (forall a. (a -> a -> a) -> Command' a -> a)
-> (forall a. (a -> a -> a) -> Command' a -> a)
-> (forall a. Command' a -> [a])
-> (forall a. Command' a -> Bool)
-> (forall a. Command' a -> Int)
-> (forall a. Eq a => a -> Command' a -> Bool)
-> (forall a. Ord a => Command' a -> a)
-> (forall a. Ord a => Command' a -> a)
-> (forall a. Num a => Command' a -> a)
-> (forall a. Num a => Command' a -> a)
-> Foldable Command'
forall a. Eq a => a -> Command' a -> Bool
forall a. Num a => Command' a -> a
forall a. Ord a => Command' a -> a
forall m. Monoid m => Command' m -> m
forall a. Command' a -> Bool
forall a. Command' a -> Int
forall a. Command' a -> [a]
forall a. (a -> a -> a) -> Command' a -> a
forall m a. Monoid m => (a -> m) -> Command' a -> m
forall b a. (b -> a -> b) -> b -> Command' a -> b
forall a b. (a -> b -> b) -> b -> Command' 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 => Command' m -> m
fold :: forall m. Monoid m => Command' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Command' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Command' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Command' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Command' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Command' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Command' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Command' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Command' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Command' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Command' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Command' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Command' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Command' a -> a
foldr1 :: forall a. (a -> a -> a) -> Command' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Command' a -> a
foldl1 :: forall a. (a -> a -> a) -> Command' a -> a
$ctoList :: forall a. Command' a -> [a]
toList :: forall a. Command' a -> [a]
$cnull :: forall a. Command' a -> Bool
null :: forall a. Command' a -> Bool
$clength :: forall a. Command' a -> Int
length :: forall a. Command' a -> Int
$celem :: forall a. Eq a => a -> Command' a -> Bool
elem :: forall a. Eq a => a -> Command' a -> Bool
$cmaximum :: forall a. Ord a => Command' a -> a
maximum :: forall a. Ord a => Command' a -> a
$cminimum :: forall a. Ord a => Command' a -> a
minimum :: forall a. Ord a => Command' a -> a
$csum :: forall a. Num a => Command' a -> a
sum :: forall a. Num a => Command' a -> a
$cproduct :: forall a. Num a => Command' a -> a
product :: forall a. Num a => Command' a -> a
C.Foldable, Functor Command'
Foldable Command'
(Functor Command', Foldable Command') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Command' a -> f (Command' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Command' (f a) -> f (Command' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Command' a -> m (Command' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    Command' (m a) -> m (Command' a))
-> Traversable Command'
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 => Command' (m a) -> m (Command' a)
forall (f :: * -> *) a.
Applicative f =>
Command' (f a) -> f (Command' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Command' a -> m (Command' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Command' a -> f (Command' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Command' a -> f (Command' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Command' a -> f (Command' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
Command' (f a) -> f (Command' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Command' (f a) -> f (Command' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Command' a -> m (Command' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Command' a -> m (Command' b)
$csequence :: forall (m :: * -> *) a. Monad m => Command' (m a) -> m (Command' a)
sequence :: forall (m :: * -> *) a. Monad m => Command' (m a) -> m (Command' a)
C.Traversable, Typeable (Command' a)
Typeable (Command' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Command' a -> c (Command' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Command' a))
-> (Command' a -> Constr)
-> (Command' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Command' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (Command' a)))
-> ((forall b. Data b => b -> b) -> Command' a -> Command' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Command' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Command' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> Command' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> Command' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Command' a -> m (Command' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Command' a -> m (Command' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Command' a -> m (Command' a))
-> Data (Command' a)
Command' a -> Constr
Command' a -> DataType
(forall b. Data b => b -> b) -> Command' a -> Command' a
forall a. Data a => Typeable (Command' a)
forall a. Data a => Command' a -> Constr
forall a. Data a => Command' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Command' a -> Command' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Command' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Command' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Command' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Command' a -> c (Command' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Command' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Command' a))
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) -> Command' a -> u
forall u. (forall d. Data d => d -> u) -> Command' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Command' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Command' a -> c (Command' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Command' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Command' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Command' a -> c (Command' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Command' a -> c (Command' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Command' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Command' a)
$ctoConstr :: forall a. Data a => Command' a -> Constr
toConstr :: Command' a -> Constr
$cdataTypeOf :: forall a. Data a => Command' a -> DataType
dataTypeOf :: Command' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Command' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Command' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Command' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Command' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Command' a -> Command' a
gmapT :: (forall b. Data b => b -> b) -> Command' a -> Command' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Command' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Command' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Command' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Command' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Command' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Command' a -> m (Command' a)
C.Data, C.Typeable, (forall x. Command' a -> Rep (Command' a) x)
-> (forall x. Rep (Command' a) x -> Command' a)
-> Generic (Command' a)
forall x. Rep (Command' a) x -> Command' a
forall x. Command' a -> Rep (Command' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Command' a) x -> Command' a
forall a x. Command' a -> Rep (Command' a) x
$cfrom :: forall a x. Command' a -> Rep (Command' a) x
from :: forall x. Command' a -> Rep (Command' a) x
$cto :: forall a x. Rep (Command' a) x -> Command' a
to :: forall x. Rep (Command' a) x -> Command' a
C.Generic)

type DeclUsedVars = DeclUsedVars' BNFC'Position
data DeclUsedVars' a = DeclUsedVars a [VarIdent' a]
  deriving (DeclUsedVars' a -> DeclUsedVars' a -> Bool
(DeclUsedVars' a -> DeclUsedVars' a -> Bool)
-> (DeclUsedVars' a -> DeclUsedVars' a -> Bool)
-> Eq (DeclUsedVars' a)
forall a. Eq a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
== :: DeclUsedVars' a -> DeclUsedVars' a -> Bool
$c/= :: forall a. Eq a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
/= :: DeclUsedVars' a -> DeclUsedVars' a -> Bool
C.Eq, Eq (DeclUsedVars' a)
Eq (DeclUsedVars' a) =>
(DeclUsedVars' a -> DeclUsedVars' a -> Ordering)
-> (DeclUsedVars' a -> DeclUsedVars' a -> Bool)
-> (DeclUsedVars' a -> DeclUsedVars' a -> Bool)
-> (DeclUsedVars' a -> DeclUsedVars' a -> Bool)
-> (DeclUsedVars' a -> DeclUsedVars' a -> Bool)
-> (DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a)
-> (DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a)
-> Ord (DeclUsedVars' a)
DeclUsedVars' a -> DeclUsedVars' a -> Bool
DeclUsedVars' a -> DeclUsedVars' a -> Ordering
DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (DeclUsedVars' a)
forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Ordering
forall a.
Ord a =>
DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a
$ccompare :: forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Ordering
compare :: DeclUsedVars' a -> DeclUsedVars' a -> Ordering
$c< :: forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
< :: DeclUsedVars' a -> DeclUsedVars' a -> Bool
$c<= :: forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
<= :: DeclUsedVars' a -> DeclUsedVars' a -> Bool
$c> :: forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
> :: DeclUsedVars' a -> DeclUsedVars' a -> Bool
$c>= :: forall a. Ord a => DeclUsedVars' a -> DeclUsedVars' a -> Bool
>= :: DeclUsedVars' a -> DeclUsedVars' a -> Bool
$cmax :: forall a.
Ord a =>
DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a
max :: DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a
$cmin :: forall a.
Ord a =>
DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a
min :: DeclUsedVars' a -> DeclUsedVars' a -> DeclUsedVars' a
C.Ord, Int -> DeclUsedVars' a -> ShowS
[DeclUsedVars' a] -> ShowS
DeclUsedVars' a -> String
(Int -> DeclUsedVars' a -> ShowS)
-> (DeclUsedVars' a -> String)
-> ([DeclUsedVars' a] -> ShowS)
-> Show (DeclUsedVars' a)
forall a. Show a => Int -> DeclUsedVars' a -> ShowS
forall a. Show a => [DeclUsedVars' a] -> ShowS
forall a. Show a => DeclUsedVars' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> DeclUsedVars' a -> ShowS
showsPrec :: Int -> DeclUsedVars' a -> ShowS
$cshow :: forall a. Show a => DeclUsedVars' a -> String
show :: DeclUsedVars' a -> String
$cshowList :: forall a. Show a => [DeclUsedVars' a] -> ShowS
showList :: [DeclUsedVars' a] -> ShowS
C.Show, ReadPrec [DeclUsedVars' a]
ReadPrec (DeclUsedVars' a)
Int -> ReadS (DeclUsedVars' a)
ReadS [DeclUsedVars' a]
(Int -> ReadS (DeclUsedVars' a))
-> ReadS [DeclUsedVars' a]
-> ReadPrec (DeclUsedVars' a)
-> ReadPrec [DeclUsedVars' a]
-> Read (DeclUsedVars' a)
forall a. Read a => ReadPrec [DeclUsedVars' a]
forall a. Read a => ReadPrec (DeclUsedVars' a)
forall a. Read a => Int -> ReadS (DeclUsedVars' a)
forall a. Read a => ReadS [DeclUsedVars' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (DeclUsedVars' a)
readsPrec :: Int -> ReadS (DeclUsedVars' a)
$creadList :: forall a. Read a => ReadS [DeclUsedVars' a]
readList :: ReadS [DeclUsedVars' a]
$creadPrec :: forall a. Read a => ReadPrec (DeclUsedVars' a)
readPrec :: ReadPrec (DeclUsedVars' a)
$creadListPrec :: forall a. Read a => ReadPrec [DeclUsedVars' a]
readListPrec :: ReadPrec [DeclUsedVars' a]
C.Read, (forall a b. (a -> b) -> DeclUsedVars' a -> DeclUsedVars' b)
-> (forall a b. a -> DeclUsedVars' b -> DeclUsedVars' a)
-> Functor DeclUsedVars'
forall a b. a -> DeclUsedVars' b -> DeclUsedVars' a
forall a b. (a -> b) -> DeclUsedVars' a -> DeclUsedVars' 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) -> DeclUsedVars' a -> DeclUsedVars' b
fmap :: forall a b. (a -> b) -> DeclUsedVars' a -> DeclUsedVars' b
$c<$ :: forall a b. a -> DeclUsedVars' b -> DeclUsedVars' a
<$ :: forall a b. a -> DeclUsedVars' b -> DeclUsedVars' a
C.Functor, (forall m. Monoid m => DeclUsedVars' m -> m)
-> (forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m)
-> (forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m)
-> (forall a b. (a -> b -> b) -> b -> DeclUsedVars' a -> b)
-> (forall a b. (a -> b -> b) -> b -> DeclUsedVars' a -> b)
-> (forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b)
-> (forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b)
-> (forall a. (a -> a -> a) -> DeclUsedVars' a -> a)
-> (forall a. (a -> a -> a) -> DeclUsedVars' a -> a)
-> (forall a. DeclUsedVars' a -> [a])
-> (forall a. DeclUsedVars' a -> Bool)
-> (forall a. DeclUsedVars' a -> Int)
-> (forall a. Eq a => a -> DeclUsedVars' a -> Bool)
-> (forall a. Ord a => DeclUsedVars' a -> a)
-> (forall a. Ord a => DeclUsedVars' a -> a)
-> (forall a. Num a => DeclUsedVars' a -> a)
-> (forall a. Num a => DeclUsedVars' a -> a)
-> Foldable DeclUsedVars'
forall a. Eq a => a -> DeclUsedVars' a -> Bool
forall a. Num a => DeclUsedVars' a -> a
forall a. Ord a => DeclUsedVars' a -> a
forall m. Monoid m => DeclUsedVars' m -> m
forall a. DeclUsedVars' a -> Bool
forall a. DeclUsedVars' a -> Int
forall a. DeclUsedVars' a -> [a]
forall a. (a -> a -> a) -> DeclUsedVars' a -> a
forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m
forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b
forall a b. (a -> b -> b) -> b -> DeclUsedVars' 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 => DeclUsedVars' m -> m
fold :: forall m. Monoid m => DeclUsedVars' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> DeclUsedVars' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> DeclUsedVars' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> DeclUsedVars' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> DeclUsedVars' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> DeclUsedVars' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> DeclUsedVars' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> DeclUsedVars' a -> a
foldr1 :: forall a. (a -> a -> a) -> DeclUsedVars' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> DeclUsedVars' a -> a
foldl1 :: forall a. (a -> a -> a) -> DeclUsedVars' a -> a
$ctoList :: forall a. DeclUsedVars' a -> [a]
toList :: forall a. DeclUsedVars' a -> [a]
$cnull :: forall a. DeclUsedVars' a -> Bool
null :: forall a. DeclUsedVars' a -> Bool
$clength :: forall a. DeclUsedVars' a -> Int
length :: forall a. DeclUsedVars' a -> Int
$celem :: forall a. Eq a => a -> DeclUsedVars' a -> Bool
elem :: forall a. Eq a => a -> DeclUsedVars' a -> Bool
$cmaximum :: forall a. Ord a => DeclUsedVars' a -> a
maximum :: forall a. Ord a => DeclUsedVars' a -> a
$cminimum :: forall a. Ord a => DeclUsedVars' a -> a
minimum :: forall a. Ord a => DeclUsedVars' a -> a
$csum :: forall a. Num a => DeclUsedVars' a -> a
sum :: forall a. Num a => DeclUsedVars' a -> a
$cproduct :: forall a. Num a => DeclUsedVars' a -> a
product :: forall a. Num a => DeclUsedVars' a -> a
C.Foldable, Functor DeclUsedVars'
Foldable DeclUsedVars'
(Functor DeclUsedVars', Foldable DeclUsedVars') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> DeclUsedVars' a -> f (DeclUsedVars' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    DeclUsedVars' (f a) -> f (DeclUsedVars' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> DeclUsedVars' a -> m (DeclUsedVars' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    DeclUsedVars' (m a) -> m (DeclUsedVars' a))
-> Traversable DeclUsedVars'
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 =>
DeclUsedVars' (m a) -> m (DeclUsedVars' a)
forall (f :: * -> *) a.
Applicative f =>
DeclUsedVars' (f a) -> f (DeclUsedVars' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> DeclUsedVars' a -> m (DeclUsedVars' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeclUsedVars' a -> f (DeclUsedVars' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeclUsedVars' a -> f (DeclUsedVars' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeclUsedVars' a -> f (DeclUsedVars' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
DeclUsedVars' (f a) -> f (DeclUsedVars' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
DeclUsedVars' (f a) -> f (DeclUsedVars' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> DeclUsedVars' a -> m (DeclUsedVars' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> DeclUsedVars' a -> m (DeclUsedVars' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
DeclUsedVars' (m a) -> m (DeclUsedVars' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
DeclUsedVars' (m a) -> m (DeclUsedVars' a)
C.Traversable, Typeable (DeclUsedVars' a)
Typeable (DeclUsedVars' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> DeclUsedVars' a -> c (DeclUsedVars' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (DeclUsedVars' a))
-> (DeclUsedVars' a -> Constr)
-> (DeclUsedVars' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (DeclUsedVars' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (DeclUsedVars' a)))
-> ((forall b. Data b => b -> b)
    -> DeclUsedVars' a -> DeclUsedVars' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> DeclUsedVars' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> DeclUsedVars' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> DeclUsedVars' a -> m (DeclUsedVars' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> DeclUsedVars' a -> m (DeclUsedVars' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> DeclUsedVars' a -> m (DeclUsedVars' a))
-> Data (DeclUsedVars' a)
DeclUsedVars' a -> Constr
DeclUsedVars' a -> DataType
(forall b. Data b => b -> b) -> DeclUsedVars' a -> DeclUsedVars' a
forall a. Data a => Typeable (DeclUsedVars' a)
forall a. Data a => DeclUsedVars' a -> Constr
forall a. Data a => DeclUsedVars' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> DeclUsedVars' a -> DeclUsedVars' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> DeclUsedVars' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> DeclUsedVars' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (DeclUsedVars' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclUsedVars' a -> c (DeclUsedVars' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (DeclUsedVars' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (DeclUsedVars' a))
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) -> DeclUsedVars' a -> u
forall u. (forall d. Data d => d -> u) -> DeclUsedVars' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (DeclUsedVars' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclUsedVars' a -> c (DeclUsedVars' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (DeclUsedVars' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (DeclUsedVars' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclUsedVars' a -> c (DeclUsedVars' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclUsedVars' a -> c (DeclUsedVars' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (DeclUsedVars' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (DeclUsedVars' a)
$ctoConstr :: forall a. Data a => DeclUsedVars' a -> Constr
toConstr :: DeclUsedVars' a -> Constr
$cdataTypeOf :: forall a. Data a => DeclUsedVars' a -> DataType
dataTypeOf :: DeclUsedVars' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (DeclUsedVars' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (DeclUsedVars' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (DeclUsedVars' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (DeclUsedVars' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> DeclUsedVars' a -> DeclUsedVars' a
gmapT :: (forall b. Data b => b -> b) -> DeclUsedVars' a -> DeclUsedVars' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclUsedVars' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> DeclUsedVars' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> DeclUsedVars' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> DeclUsedVars' a -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> DeclUsedVars' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> DeclUsedVars' a -> m (DeclUsedVars' a)
C.Data, C.Typeable, (forall x. DeclUsedVars' a -> Rep (DeclUsedVars' a) x)
-> (forall x. Rep (DeclUsedVars' a) x -> DeclUsedVars' a)
-> Generic (DeclUsedVars' a)
forall x. Rep (DeclUsedVars' a) x -> DeclUsedVars' a
forall x. DeclUsedVars' a -> Rep (DeclUsedVars' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (DeclUsedVars' a) x -> DeclUsedVars' a
forall a x. DeclUsedVars' a -> Rep (DeclUsedVars' a) x
$cfrom :: forall a x. DeclUsedVars' a -> Rep (DeclUsedVars' a) x
from :: forall x. DeclUsedVars' a -> Rep (DeclUsedVars' a) x
$cto :: forall a x. Rep (DeclUsedVars' a) x -> DeclUsedVars' a
to :: forall x. Rep (DeclUsedVars' a) x -> DeclUsedVars' a
C.Generic)

type SectionName = SectionName' BNFC'Position
data SectionName' a
    = NoSectionName a | SomeSectionName a (VarIdent' a)
  deriving (SectionName' a -> SectionName' a -> Bool
(SectionName' a -> SectionName' a -> Bool)
-> (SectionName' a -> SectionName' a -> Bool)
-> Eq (SectionName' a)
forall a. Eq a => SectionName' a -> SectionName' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => SectionName' a -> SectionName' a -> Bool
== :: SectionName' a -> SectionName' a -> Bool
$c/= :: forall a. Eq a => SectionName' a -> SectionName' a -> Bool
/= :: SectionName' a -> SectionName' a -> Bool
C.Eq, Eq (SectionName' a)
Eq (SectionName' a) =>
(SectionName' a -> SectionName' a -> Ordering)
-> (SectionName' a -> SectionName' a -> Bool)
-> (SectionName' a -> SectionName' a -> Bool)
-> (SectionName' a -> SectionName' a -> Bool)
-> (SectionName' a -> SectionName' a -> Bool)
-> (SectionName' a -> SectionName' a -> SectionName' a)
-> (SectionName' a -> SectionName' a -> SectionName' a)
-> Ord (SectionName' a)
SectionName' a -> SectionName' a -> Bool
SectionName' a -> SectionName' a -> Ordering
SectionName' a -> SectionName' a -> SectionName' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (SectionName' a)
forall a. Ord a => SectionName' a -> SectionName' a -> Bool
forall a. Ord a => SectionName' a -> SectionName' a -> Ordering
forall a.
Ord a =>
SectionName' a -> SectionName' a -> SectionName' a
$ccompare :: forall a. Ord a => SectionName' a -> SectionName' a -> Ordering
compare :: SectionName' a -> SectionName' a -> Ordering
$c< :: forall a. Ord a => SectionName' a -> SectionName' a -> Bool
< :: SectionName' a -> SectionName' a -> Bool
$c<= :: forall a. Ord a => SectionName' a -> SectionName' a -> Bool
<= :: SectionName' a -> SectionName' a -> Bool
$c> :: forall a. Ord a => SectionName' a -> SectionName' a -> Bool
> :: SectionName' a -> SectionName' a -> Bool
$c>= :: forall a. Ord a => SectionName' a -> SectionName' a -> Bool
>= :: SectionName' a -> SectionName' a -> Bool
$cmax :: forall a.
Ord a =>
SectionName' a -> SectionName' a -> SectionName' a
max :: SectionName' a -> SectionName' a -> SectionName' a
$cmin :: forall a.
Ord a =>
SectionName' a -> SectionName' a -> SectionName' a
min :: SectionName' a -> SectionName' a -> SectionName' a
C.Ord, Int -> SectionName' a -> ShowS
[SectionName' a] -> ShowS
SectionName' a -> String
(Int -> SectionName' a -> ShowS)
-> (SectionName' a -> String)
-> ([SectionName' a] -> ShowS)
-> Show (SectionName' a)
forall a. Show a => Int -> SectionName' a -> ShowS
forall a. Show a => [SectionName' a] -> ShowS
forall a. Show a => SectionName' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> SectionName' a -> ShowS
showsPrec :: Int -> SectionName' a -> ShowS
$cshow :: forall a. Show a => SectionName' a -> String
show :: SectionName' a -> String
$cshowList :: forall a. Show a => [SectionName' a] -> ShowS
showList :: [SectionName' a] -> ShowS
C.Show, ReadPrec [SectionName' a]
ReadPrec (SectionName' a)
Int -> ReadS (SectionName' a)
ReadS [SectionName' a]
(Int -> ReadS (SectionName' a))
-> ReadS [SectionName' a]
-> ReadPrec (SectionName' a)
-> ReadPrec [SectionName' a]
-> Read (SectionName' a)
forall a. Read a => ReadPrec [SectionName' a]
forall a. Read a => ReadPrec (SectionName' a)
forall a. Read a => Int -> ReadS (SectionName' a)
forall a. Read a => ReadS [SectionName' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (SectionName' a)
readsPrec :: Int -> ReadS (SectionName' a)
$creadList :: forall a. Read a => ReadS [SectionName' a]
readList :: ReadS [SectionName' a]
$creadPrec :: forall a. Read a => ReadPrec (SectionName' a)
readPrec :: ReadPrec (SectionName' a)
$creadListPrec :: forall a. Read a => ReadPrec [SectionName' a]
readListPrec :: ReadPrec [SectionName' a]
C.Read, (forall a b. (a -> b) -> SectionName' a -> SectionName' b)
-> (forall a b. a -> SectionName' b -> SectionName' a)
-> Functor SectionName'
forall a b. a -> SectionName' b -> SectionName' a
forall a b. (a -> b) -> SectionName' a -> SectionName' 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) -> SectionName' a -> SectionName' b
fmap :: forall a b. (a -> b) -> SectionName' a -> SectionName' b
$c<$ :: forall a b. a -> SectionName' b -> SectionName' a
<$ :: forall a b. a -> SectionName' b -> SectionName' a
C.Functor, (forall m. Monoid m => SectionName' m -> m)
-> (forall m a. Monoid m => (a -> m) -> SectionName' a -> m)
-> (forall m a. Monoid m => (a -> m) -> SectionName' a -> m)
-> (forall a b. (a -> b -> b) -> b -> SectionName' a -> b)
-> (forall a b. (a -> b -> b) -> b -> SectionName' a -> b)
-> (forall b a. (b -> a -> b) -> b -> SectionName' a -> b)
-> (forall b a. (b -> a -> b) -> b -> SectionName' a -> b)
-> (forall a. (a -> a -> a) -> SectionName' a -> a)
-> (forall a. (a -> a -> a) -> SectionName' a -> a)
-> (forall a. SectionName' a -> [a])
-> (forall a. SectionName' a -> Bool)
-> (forall a. SectionName' a -> Int)
-> (forall a. Eq a => a -> SectionName' a -> Bool)
-> (forall a. Ord a => SectionName' a -> a)
-> (forall a. Ord a => SectionName' a -> a)
-> (forall a. Num a => SectionName' a -> a)
-> (forall a. Num a => SectionName' a -> a)
-> Foldable SectionName'
forall a. Eq a => a -> SectionName' a -> Bool
forall a. Num a => SectionName' a -> a
forall a. Ord a => SectionName' a -> a
forall m. Monoid m => SectionName' m -> m
forall a. SectionName' a -> Bool
forall a. SectionName' a -> Int
forall a. SectionName' a -> [a]
forall a. (a -> a -> a) -> SectionName' a -> a
forall m a. Monoid m => (a -> m) -> SectionName' a -> m
forall b a. (b -> a -> b) -> b -> SectionName' a -> b
forall a b. (a -> b -> b) -> b -> SectionName' 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 => SectionName' m -> m
fold :: forall m. Monoid m => SectionName' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> SectionName' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> SectionName' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> SectionName' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> SectionName' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> SectionName' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> SectionName' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> SectionName' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> SectionName' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> SectionName' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> SectionName' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> SectionName' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> SectionName' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> SectionName' a -> a
foldr1 :: forall a. (a -> a -> a) -> SectionName' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> SectionName' a -> a
foldl1 :: forall a. (a -> a -> a) -> SectionName' a -> a
$ctoList :: forall a. SectionName' a -> [a]
toList :: forall a. SectionName' a -> [a]
$cnull :: forall a. SectionName' a -> Bool
null :: forall a. SectionName' a -> Bool
$clength :: forall a. SectionName' a -> Int
length :: forall a. SectionName' a -> Int
$celem :: forall a. Eq a => a -> SectionName' a -> Bool
elem :: forall a. Eq a => a -> SectionName' a -> Bool
$cmaximum :: forall a. Ord a => SectionName' a -> a
maximum :: forall a. Ord a => SectionName' a -> a
$cminimum :: forall a. Ord a => SectionName' a -> a
minimum :: forall a. Ord a => SectionName' a -> a
$csum :: forall a. Num a => SectionName' a -> a
sum :: forall a. Num a => SectionName' a -> a
$cproduct :: forall a. Num a => SectionName' a -> a
product :: forall a. Num a => SectionName' a -> a
C.Foldable, Functor SectionName'
Foldable SectionName'
(Functor SectionName', Foldable SectionName') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> SectionName' a -> f (SectionName' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    SectionName' (f a) -> f (SectionName' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> SectionName' a -> m (SectionName' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    SectionName' (m a) -> m (SectionName' a))
-> Traversable SectionName'
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 =>
SectionName' (m a) -> m (SectionName' a)
forall (f :: * -> *) a.
Applicative f =>
SectionName' (f a) -> f (SectionName' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> SectionName' a -> m (SectionName' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> SectionName' a -> f (SectionName' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> SectionName' a -> f (SectionName' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> SectionName' a -> f (SectionName' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
SectionName' (f a) -> f (SectionName' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
SectionName' (f a) -> f (SectionName' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> SectionName' a -> m (SectionName' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> SectionName' a -> m (SectionName' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
SectionName' (m a) -> m (SectionName' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
SectionName' (m a) -> m (SectionName' a)
C.Traversable, Typeable (SectionName' a)
Typeable (SectionName' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> SectionName' a -> c (SectionName' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (SectionName' a))
-> (SectionName' a -> Constr)
-> (SectionName' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (SectionName' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (SectionName' a)))
-> ((forall b. Data b => b -> b)
    -> SectionName' a -> SectionName' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> SectionName' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> SectionName' a -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> SectionName' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> SectionName' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> SectionName' a -> m (SectionName' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> SectionName' a -> m (SectionName' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> SectionName' a -> m (SectionName' a))
-> Data (SectionName' a)
SectionName' a -> Constr
SectionName' a -> DataType
(forall b. Data b => b -> b) -> SectionName' a -> SectionName' a
forall a. Data a => Typeable (SectionName' a)
forall a. Data a => SectionName' a -> Constr
forall a. Data a => SectionName' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> SectionName' a -> SectionName' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> SectionName' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> SectionName' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (SectionName' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SectionName' a -> c (SectionName' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (SectionName' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (SectionName' a))
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) -> SectionName' a -> u
forall u. (forall d. Data d => d -> u) -> SectionName' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (SectionName' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SectionName' a -> c (SectionName' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (SectionName' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (SectionName' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SectionName' a -> c (SectionName' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SectionName' a -> c (SectionName' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (SectionName' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (SectionName' a)
$ctoConstr :: forall a. Data a => SectionName' a -> Constr
toConstr :: SectionName' a -> Constr
$cdataTypeOf :: forall a. Data a => SectionName' a -> DataType
dataTypeOf :: SectionName' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (SectionName' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (SectionName' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (SectionName' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (SectionName' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> SectionName' a -> SectionName' a
gmapT :: (forall b. Data b => b -> b) -> SectionName' a -> SectionName' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SectionName' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> SectionName' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> SectionName' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> SectionName' a -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> SectionName' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SectionName' a -> m (SectionName' a)
C.Data, C.Typeable, (forall x. SectionName' a -> Rep (SectionName' a) x)
-> (forall x. Rep (SectionName' a) x -> SectionName' a)
-> Generic (SectionName' a)
forall x. Rep (SectionName' a) x -> SectionName' a
forall x. SectionName' a -> Rep (SectionName' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (SectionName' a) x -> SectionName' a
forall a x. SectionName' a -> Rep (SectionName' a) x
$cfrom :: forall a x. SectionName' a -> Rep (SectionName' a) x
from :: forall x. SectionName' a -> Rep (SectionName' a) x
$cto :: forall a x. Rep (SectionName' a) x -> SectionName' a
to :: forall x. Rep (SectionName' a) x -> SectionName' a
C.Generic)

type Pattern = Pattern' BNFC'Position
data Pattern' a
    = PatternUnit a
    | PatternVar a (VarIdent' a)
    | PatternPair a (Pattern' a) (Pattern' a)
  deriving (Pattern' a -> Pattern' a -> Bool
(Pattern' a -> Pattern' a -> Bool)
-> (Pattern' a -> Pattern' a -> Bool) -> Eq (Pattern' a)
forall a. Eq a => Pattern' a -> Pattern' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Pattern' a -> Pattern' a -> Bool
== :: Pattern' a -> Pattern' a -> Bool
$c/= :: forall a. Eq a => Pattern' a -> Pattern' a -> Bool
/= :: Pattern' a -> Pattern' a -> Bool
C.Eq, Eq (Pattern' a)
Eq (Pattern' a) =>
(Pattern' a -> Pattern' a -> Ordering)
-> (Pattern' a -> Pattern' a -> Bool)
-> (Pattern' a -> Pattern' a -> Bool)
-> (Pattern' a -> Pattern' a -> Bool)
-> (Pattern' a -> Pattern' a -> Bool)
-> (Pattern' a -> Pattern' a -> Pattern' a)
-> (Pattern' a -> Pattern' a -> Pattern' a)
-> Ord (Pattern' a)
Pattern' a -> Pattern' a -> Bool
Pattern' a -> Pattern' a -> Ordering
Pattern' a -> Pattern' a -> Pattern' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Pattern' a)
forall a. Ord a => Pattern' a -> Pattern' a -> Bool
forall a. Ord a => Pattern' a -> Pattern' a -> Ordering
forall a. Ord a => Pattern' a -> Pattern' a -> Pattern' a
$ccompare :: forall a. Ord a => Pattern' a -> Pattern' a -> Ordering
compare :: Pattern' a -> Pattern' a -> Ordering
$c< :: forall a. Ord a => Pattern' a -> Pattern' a -> Bool
< :: Pattern' a -> Pattern' a -> Bool
$c<= :: forall a. Ord a => Pattern' a -> Pattern' a -> Bool
<= :: Pattern' a -> Pattern' a -> Bool
$c> :: forall a. Ord a => Pattern' a -> Pattern' a -> Bool
> :: Pattern' a -> Pattern' a -> Bool
$c>= :: forall a. Ord a => Pattern' a -> Pattern' a -> Bool
>= :: Pattern' a -> Pattern' a -> Bool
$cmax :: forall a. Ord a => Pattern' a -> Pattern' a -> Pattern' a
max :: Pattern' a -> Pattern' a -> Pattern' a
$cmin :: forall a. Ord a => Pattern' a -> Pattern' a -> Pattern' a
min :: Pattern' a -> Pattern' a -> Pattern' a
C.Ord, Int -> Pattern' a -> ShowS
[Pattern' a] -> ShowS
Pattern' a -> String
(Int -> Pattern' a -> ShowS)
-> (Pattern' a -> String)
-> ([Pattern' a] -> ShowS)
-> Show (Pattern' a)
forall a. Show a => Int -> Pattern' a -> ShowS
forall a. Show a => [Pattern' a] -> ShowS
forall a. Show a => Pattern' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Pattern' a -> ShowS
showsPrec :: Int -> Pattern' a -> ShowS
$cshow :: forall a. Show a => Pattern' a -> String
show :: Pattern' a -> String
$cshowList :: forall a. Show a => [Pattern' a] -> ShowS
showList :: [Pattern' a] -> ShowS
C.Show, ReadPrec [Pattern' a]
ReadPrec (Pattern' a)
Int -> ReadS (Pattern' a)
ReadS [Pattern' a]
(Int -> ReadS (Pattern' a))
-> ReadS [Pattern' a]
-> ReadPrec (Pattern' a)
-> ReadPrec [Pattern' a]
-> Read (Pattern' a)
forall a. Read a => ReadPrec [Pattern' a]
forall a. Read a => ReadPrec (Pattern' a)
forall a. Read a => Int -> ReadS (Pattern' a)
forall a. Read a => ReadS [Pattern' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Pattern' a)
readsPrec :: Int -> ReadS (Pattern' a)
$creadList :: forall a. Read a => ReadS [Pattern' a]
readList :: ReadS [Pattern' a]
$creadPrec :: forall a. Read a => ReadPrec (Pattern' a)
readPrec :: ReadPrec (Pattern' a)
$creadListPrec :: forall a. Read a => ReadPrec [Pattern' a]
readListPrec :: ReadPrec [Pattern' a]
C.Read, (forall a b. (a -> b) -> Pattern' a -> Pattern' b)
-> (forall a b. a -> Pattern' b -> Pattern' a) -> Functor Pattern'
forall a b. a -> Pattern' b -> Pattern' a
forall a b. (a -> b) -> Pattern' a -> Pattern' 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) -> Pattern' a -> Pattern' b
fmap :: forall a b. (a -> b) -> Pattern' a -> Pattern' b
$c<$ :: forall a b. a -> Pattern' b -> Pattern' a
<$ :: forall a b. a -> Pattern' b -> Pattern' a
C.Functor, (forall m. Monoid m => Pattern' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Pattern' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Pattern' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Pattern' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Pattern' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Pattern' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Pattern' a -> b)
-> (forall a. (a -> a -> a) -> Pattern' a -> a)
-> (forall a. (a -> a -> a) -> Pattern' a -> a)
-> (forall a. Pattern' a -> [a])
-> (forall a. Pattern' a -> Bool)
-> (forall a. Pattern' a -> Int)
-> (forall a. Eq a => a -> Pattern' a -> Bool)
-> (forall a. Ord a => Pattern' a -> a)
-> (forall a. Ord a => Pattern' a -> a)
-> (forall a. Num a => Pattern' a -> a)
-> (forall a. Num a => Pattern' a -> a)
-> Foldable Pattern'
forall a. Eq a => a -> Pattern' a -> Bool
forall a. Num a => Pattern' a -> a
forall a. Ord a => Pattern' a -> a
forall m. Monoid m => Pattern' m -> m
forall a. Pattern' a -> Bool
forall a. Pattern' a -> Int
forall a. Pattern' a -> [a]
forall a. (a -> a -> a) -> Pattern' a -> a
forall m a. Monoid m => (a -> m) -> Pattern' a -> m
forall b a. (b -> a -> b) -> b -> Pattern' a -> b
forall a b. (a -> b -> b) -> b -> Pattern' 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 => Pattern' m -> m
fold :: forall m. Monoid m => Pattern' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Pattern' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Pattern' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Pattern' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Pattern' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Pattern' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Pattern' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Pattern' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Pattern' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Pattern' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Pattern' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Pattern' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Pattern' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Pattern' a -> a
foldr1 :: forall a. (a -> a -> a) -> Pattern' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Pattern' a -> a
foldl1 :: forall a. (a -> a -> a) -> Pattern' a -> a
$ctoList :: forall a. Pattern' a -> [a]
toList :: forall a. Pattern' a -> [a]
$cnull :: forall a. Pattern' a -> Bool
null :: forall a. Pattern' a -> Bool
$clength :: forall a. Pattern' a -> Int
length :: forall a. Pattern' a -> Int
$celem :: forall a. Eq a => a -> Pattern' a -> Bool
elem :: forall a. Eq a => a -> Pattern' a -> Bool
$cmaximum :: forall a. Ord a => Pattern' a -> a
maximum :: forall a. Ord a => Pattern' a -> a
$cminimum :: forall a. Ord a => Pattern' a -> a
minimum :: forall a. Ord a => Pattern' a -> a
$csum :: forall a. Num a => Pattern' a -> a
sum :: forall a. Num a => Pattern' a -> a
$cproduct :: forall a. Num a => Pattern' a -> a
product :: forall a. Num a => Pattern' a -> a
C.Foldable, Functor Pattern'
Foldable Pattern'
(Functor Pattern', Foldable Pattern') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Pattern' a -> f (Pattern' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Pattern' (f a) -> f (Pattern' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Pattern' a -> m (Pattern' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    Pattern' (m a) -> m (Pattern' a))
-> Traversable Pattern'
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 => Pattern' (m a) -> m (Pattern' a)
forall (f :: * -> *) a.
Applicative f =>
Pattern' (f a) -> f (Pattern' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Pattern' a -> m (Pattern' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Pattern' a -> f (Pattern' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Pattern' a -> f (Pattern' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Pattern' a -> f (Pattern' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
Pattern' (f a) -> f (Pattern' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Pattern' (f a) -> f (Pattern' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Pattern' a -> m (Pattern' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Pattern' a -> m (Pattern' b)
$csequence :: forall (m :: * -> *) a. Monad m => Pattern' (m a) -> m (Pattern' a)
sequence :: forall (m :: * -> *) a. Monad m => Pattern' (m a) -> m (Pattern' a)
C.Traversable, Typeable (Pattern' a)
Typeable (Pattern' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Pattern' a -> c (Pattern' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Pattern' a))
-> (Pattern' a -> Constr)
-> (Pattern' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Pattern' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (Pattern' a)))
-> ((forall b. Data b => b -> b) -> Pattern' a -> Pattern' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Pattern' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Pattern' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> Pattern' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> Pattern' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a))
-> Data (Pattern' a)
Pattern' a -> Constr
Pattern' a -> DataType
(forall b. Data b => b -> b) -> Pattern' a -> Pattern' a
forall a. Data a => Typeable (Pattern' a)
forall a. Data a => Pattern' a -> Constr
forall a. Data a => Pattern' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Pattern' a -> Pattern' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Pattern' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Pattern' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Pattern' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Pattern' a -> c (Pattern' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Pattern' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Pattern' a))
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) -> Pattern' a -> u
forall u. (forall d. Data d => d -> u) -> Pattern' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Pattern' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Pattern' a -> c (Pattern' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Pattern' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Pattern' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Pattern' a -> c (Pattern' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Pattern' a -> c (Pattern' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Pattern' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Pattern' a)
$ctoConstr :: forall a. Data a => Pattern' a -> Constr
toConstr :: Pattern' a -> Constr
$cdataTypeOf :: forall a. Data a => Pattern' a -> DataType
dataTypeOf :: Pattern' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Pattern' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Pattern' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Pattern' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Pattern' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Pattern' a -> Pattern' a
gmapT :: (forall b. Data b => b -> b) -> Pattern' a -> Pattern' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Pattern' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Pattern' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Pattern' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Pattern' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Pattern' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Pattern' a -> m (Pattern' a)
C.Data, C.Typeable, (forall x. Pattern' a -> Rep (Pattern' a) x)
-> (forall x. Rep (Pattern' a) x -> Pattern' a)
-> Generic (Pattern' a)
forall x. Rep (Pattern' a) x -> Pattern' a
forall x. Pattern' a -> Rep (Pattern' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Pattern' a) x -> Pattern' a
forall a x. Pattern' a -> Rep (Pattern' a) x
$cfrom :: forall a x. Pattern' a -> Rep (Pattern' a) x
from :: forall x. Pattern' a -> Rep (Pattern' a) x
$cto :: forall a x. Rep (Pattern' a) x -> Pattern' a
to :: forall x. Rep (Pattern' a) x -> Pattern' a
C.Generic)

type Param = Param' BNFC'Position
data Param' a
    = ParamPattern a (Pattern' a)
    | ParamPatternType a [Pattern' a] (Term' a)
    | ParamPatternShape a [Pattern' a] (Term' a) (Term' a)
    | ParamPatternShapeDeprecated a (Pattern' a) (Term' a) (Term' a)
  deriving (Param' a -> Param' a -> Bool
(Param' a -> Param' a -> Bool)
-> (Param' a -> Param' a -> Bool) -> Eq (Param' a)
forall a. Eq a => Param' a -> Param' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Param' a -> Param' a -> Bool
== :: Param' a -> Param' a -> Bool
$c/= :: forall a. Eq a => Param' a -> Param' a -> Bool
/= :: Param' a -> Param' a -> Bool
C.Eq, Eq (Param' a)
Eq (Param' a) =>
(Param' a -> Param' a -> Ordering)
-> (Param' a -> Param' a -> Bool)
-> (Param' a -> Param' a -> Bool)
-> (Param' a -> Param' a -> Bool)
-> (Param' a -> Param' a -> Bool)
-> (Param' a -> Param' a -> Param' a)
-> (Param' a -> Param' a -> Param' a)
-> Ord (Param' a)
Param' a -> Param' a -> Bool
Param' a -> Param' a -> Ordering
Param' a -> Param' a -> Param' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Param' a)
forall a. Ord a => Param' a -> Param' a -> Bool
forall a. Ord a => Param' a -> Param' a -> Ordering
forall a. Ord a => Param' a -> Param' a -> Param' a
$ccompare :: forall a. Ord a => Param' a -> Param' a -> Ordering
compare :: Param' a -> Param' a -> Ordering
$c< :: forall a. Ord a => Param' a -> Param' a -> Bool
< :: Param' a -> Param' a -> Bool
$c<= :: forall a. Ord a => Param' a -> Param' a -> Bool
<= :: Param' a -> Param' a -> Bool
$c> :: forall a. Ord a => Param' a -> Param' a -> Bool
> :: Param' a -> Param' a -> Bool
$c>= :: forall a. Ord a => Param' a -> Param' a -> Bool
>= :: Param' a -> Param' a -> Bool
$cmax :: forall a. Ord a => Param' a -> Param' a -> Param' a
max :: Param' a -> Param' a -> Param' a
$cmin :: forall a. Ord a => Param' a -> Param' a -> Param' a
min :: Param' a -> Param' a -> Param' a
C.Ord, Int -> Param' a -> ShowS
[Param' a] -> ShowS
Param' a -> String
(Int -> Param' a -> ShowS)
-> (Param' a -> String) -> ([Param' a] -> ShowS) -> Show (Param' a)
forall a. Show a => Int -> Param' a -> ShowS
forall a. Show a => [Param' a] -> ShowS
forall a. Show a => Param' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Param' a -> ShowS
showsPrec :: Int -> Param' a -> ShowS
$cshow :: forall a. Show a => Param' a -> String
show :: Param' a -> String
$cshowList :: forall a. Show a => [Param' a] -> ShowS
showList :: [Param' a] -> ShowS
C.Show, ReadPrec [Param' a]
ReadPrec (Param' a)
Int -> ReadS (Param' a)
ReadS [Param' a]
(Int -> ReadS (Param' a))
-> ReadS [Param' a]
-> ReadPrec (Param' a)
-> ReadPrec [Param' a]
-> Read (Param' a)
forall a. Read a => ReadPrec [Param' a]
forall a. Read a => ReadPrec (Param' a)
forall a. Read a => Int -> ReadS (Param' a)
forall a. Read a => ReadS [Param' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Param' a)
readsPrec :: Int -> ReadS (Param' a)
$creadList :: forall a. Read a => ReadS [Param' a]
readList :: ReadS [Param' a]
$creadPrec :: forall a. Read a => ReadPrec (Param' a)
readPrec :: ReadPrec (Param' a)
$creadListPrec :: forall a. Read a => ReadPrec [Param' a]
readListPrec :: ReadPrec [Param' a]
C.Read, (forall a b. (a -> b) -> Param' a -> Param' b)
-> (forall a b. a -> Param' b -> Param' a) -> Functor Param'
forall a b. a -> Param' b -> Param' a
forall a b. (a -> b) -> Param' a -> Param' 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) -> Param' a -> Param' b
fmap :: forall a b. (a -> b) -> Param' a -> Param' b
$c<$ :: forall a b. a -> Param' b -> Param' a
<$ :: forall a b. a -> Param' b -> Param' a
C.Functor, (forall m. Monoid m => Param' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Param' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Param' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Param' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Param' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Param' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Param' a -> b)
-> (forall a. (a -> a -> a) -> Param' a -> a)
-> (forall a. (a -> a -> a) -> Param' a -> a)
-> (forall a. Param' a -> [a])
-> (forall a. Param' a -> Bool)
-> (forall a. Param' a -> Int)
-> (forall a. Eq a => a -> Param' a -> Bool)
-> (forall a. Ord a => Param' a -> a)
-> (forall a. Ord a => Param' a -> a)
-> (forall a. Num a => Param' a -> a)
-> (forall a. Num a => Param' a -> a)
-> Foldable Param'
forall a. Eq a => a -> Param' a -> Bool
forall a. Num a => Param' a -> a
forall a. Ord a => Param' a -> a
forall m. Monoid m => Param' m -> m
forall a. Param' a -> Bool
forall a. Param' a -> Int
forall a. Param' a -> [a]
forall a. (a -> a -> a) -> Param' a -> a
forall m a. Monoid m => (a -> m) -> Param' a -> m
forall b a. (b -> a -> b) -> b -> Param' a -> b
forall a b. (a -> b -> b) -> b -> Param' 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 => Param' m -> m
fold :: forall m. Monoid m => Param' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Param' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Param' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Param' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Param' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Param' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Param' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Param' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Param' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Param' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Param' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Param' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Param' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Param' a -> a
foldr1 :: forall a. (a -> a -> a) -> Param' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Param' a -> a
foldl1 :: forall a. (a -> a -> a) -> Param' a -> a
$ctoList :: forall a. Param' a -> [a]
toList :: forall a. Param' a -> [a]
$cnull :: forall a. Param' a -> Bool
null :: forall a. Param' a -> Bool
$clength :: forall a. Param' a -> Int
length :: forall a. Param' a -> Int
$celem :: forall a. Eq a => a -> Param' a -> Bool
elem :: forall a. Eq a => a -> Param' a -> Bool
$cmaximum :: forall a. Ord a => Param' a -> a
maximum :: forall a. Ord a => Param' a -> a
$cminimum :: forall a. Ord a => Param' a -> a
minimum :: forall a. Ord a => Param' a -> a
$csum :: forall a. Num a => Param' a -> a
sum :: forall a. Num a => Param' a -> a
$cproduct :: forall a. Num a => Param' a -> a
product :: forall a. Num a => Param' a -> a
C.Foldable, Functor Param'
Foldable Param'
(Functor Param', Foldable Param') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Param' a -> f (Param' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Param' (f a) -> f (Param' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Param' a -> m (Param' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    Param' (m a) -> m (Param' a))
-> Traversable Param'
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 => Param' (m a) -> m (Param' a)
forall (f :: * -> *) a.
Applicative f =>
Param' (f a) -> f (Param' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Param' a -> m (Param' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Param' a -> f (Param' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Param' a -> f (Param' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Param' a -> f (Param' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
Param' (f a) -> f (Param' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Param' (f a) -> f (Param' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Param' a -> m (Param' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Param' a -> m (Param' b)
$csequence :: forall (m :: * -> *) a. Monad m => Param' (m a) -> m (Param' a)
sequence :: forall (m :: * -> *) a. Monad m => Param' (m a) -> m (Param' a)
C.Traversable, Typeable (Param' a)
Typeable (Param' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Param' a -> c (Param' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Param' a))
-> (Param' a -> Constr)
-> (Param' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Param' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (Param' a)))
-> ((forall b. Data b => b -> b) -> Param' a -> Param' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Param' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Param' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> Param' a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Param' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Param' a -> m (Param' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Param' a -> m (Param' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Param' a -> m (Param' a))
-> Data (Param' a)
Param' a -> Constr
Param' a -> DataType
(forall b. Data b => b -> b) -> Param' a -> Param' a
forall a. Data a => Typeable (Param' a)
forall a. Data a => Param' a -> Constr
forall a. Data a => Param' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Param' a -> Param' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Param' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Param' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Param' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Param' a -> c (Param' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Param' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Param' a))
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) -> Param' a -> u
forall u. (forall d. Data d => d -> u) -> Param' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Param' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Param' a -> c (Param' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Param' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Param' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Param' a -> c (Param' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Param' a -> c (Param' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Param' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Param' a)
$ctoConstr :: forall a. Data a => Param' a -> Constr
toConstr :: Param' a -> Constr
$cdataTypeOf :: forall a. Data a => Param' a -> DataType
dataTypeOf :: Param' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Param' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Param' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Param' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Param' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Param' a -> Param' a
gmapT :: (forall b. Data b => b -> b) -> Param' a -> Param' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Param' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Param' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Param' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Param' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Param' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Param' a -> m (Param' a)
C.Data, C.Typeable, (forall x. Param' a -> Rep (Param' a) x)
-> (forall x. Rep (Param' a) x -> Param' a) -> Generic (Param' a)
forall x. Rep (Param' a) x -> Param' a
forall x. Param' a -> Rep (Param' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Param' a) x -> Param' a
forall a x. Param' a -> Rep (Param' a) x
$cfrom :: forall a x. Param' a -> Rep (Param' a) x
from :: forall x. Param' a -> Rep (Param' a) x
$cto :: forall a x. Rep (Param' a) x -> Param' a
to :: forall x. Rep (Param' a) x -> Param' a
C.Generic)

type ParamDecl = ParamDecl' BNFC'Position
data ParamDecl' a
    = ParamType a (Term' a)
    | ParamTermType a (Term' a) (Term' a)
    | ParamTermShape a (Term' a) (Term' a) (Term' a)
    | ParamTermTypeDeprecated a (Pattern' a) (Term' a)
    | ParamVarShapeDeprecated a (Pattern' a) (Term' a) (Term' a)
  deriving (ParamDecl' a -> ParamDecl' a -> Bool
(ParamDecl' a -> ParamDecl' a -> Bool)
-> (ParamDecl' a -> ParamDecl' a -> Bool) -> Eq (ParamDecl' a)
forall a. Eq a => ParamDecl' a -> ParamDecl' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => ParamDecl' a -> ParamDecl' a -> Bool
== :: ParamDecl' a -> ParamDecl' a -> Bool
$c/= :: forall a. Eq a => ParamDecl' a -> ParamDecl' a -> Bool
/= :: ParamDecl' a -> ParamDecl' a -> Bool
C.Eq, Eq (ParamDecl' a)
Eq (ParamDecl' a) =>
(ParamDecl' a -> ParamDecl' a -> Ordering)
-> (ParamDecl' a -> ParamDecl' a -> Bool)
-> (ParamDecl' a -> ParamDecl' a -> Bool)
-> (ParamDecl' a -> ParamDecl' a -> Bool)
-> (ParamDecl' a -> ParamDecl' a -> Bool)
-> (ParamDecl' a -> ParamDecl' a -> ParamDecl' a)
-> (ParamDecl' a -> ParamDecl' a -> ParamDecl' a)
-> Ord (ParamDecl' a)
ParamDecl' a -> ParamDecl' a -> Bool
ParamDecl' a -> ParamDecl' a -> Ordering
ParamDecl' a -> ParamDecl' a -> ParamDecl' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (ParamDecl' a)
forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Bool
forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Ordering
forall a. Ord a => ParamDecl' a -> ParamDecl' a -> ParamDecl' a
$ccompare :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Ordering
compare :: ParamDecl' a -> ParamDecl' a -> Ordering
$c< :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Bool
< :: ParamDecl' a -> ParamDecl' a -> Bool
$c<= :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Bool
<= :: ParamDecl' a -> ParamDecl' a -> Bool
$c> :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Bool
> :: ParamDecl' a -> ParamDecl' a -> Bool
$c>= :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> Bool
>= :: ParamDecl' a -> ParamDecl' a -> Bool
$cmax :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> ParamDecl' a
max :: ParamDecl' a -> ParamDecl' a -> ParamDecl' a
$cmin :: forall a. Ord a => ParamDecl' a -> ParamDecl' a -> ParamDecl' a
min :: ParamDecl' a -> ParamDecl' a -> ParamDecl' a
C.Ord, Int -> ParamDecl' a -> ShowS
[ParamDecl' a] -> ShowS
ParamDecl' a -> String
(Int -> ParamDecl' a -> ShowS)
-> (ParamDecl' a -> String)
-> ([ParamDecl' a] -> ShowS)
-> Show (ParamDecl' a)
forall a. Show a => Int -> ParamDecl' a -> ShowS
forall a. Show a => [ParamDecl' a] -> ShowS
forall a. Show a => ParamDecl' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> ParamDecl' a -> ShowS
showsPrec :: Int -> ParamDecl' a -> ShowS
$cshow :: forall a. Show a => ParamDecl' a -> String
show :: ParamDecl' a -> String
$cshowList :: forall a. Show a => [ParamDecl' a] -> ShowS
showList :: [ParamDecl' a] -> ShowS
C.Show, ReadPrec [ParamDecl' a]
ReadPrec (ParamDecl' a)
Int -> ReadS (ParamDecl' a)
ReadS [ParamDecl' a]
(Int -> ReadS (ParamDecl' a))
-> ReadS [ParamDecl' a]
-> ReadPrec (ParamDecl' a)
-> ReadPrec [ParamDecl' a]
-> Read (ParamDecl' a)
forall a. Read a => ReadPrec [ParamDecl' a]
forall a. Read a => ReadPrec (ParamDecl' a)
forall a. Read a => Int -> ReadS (ParamDecl' a)
forall a. Read a => ReadS [ParamDecl' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (ParamDecl' a)
readsPrec :: Int -> ReadS (ParamDecl' a)
$creadList :: forall a. Read a => ReadS [ParamDecl' a]
readList :: ReadS [ParamDecl' a]
$creadPrec :: forall a. Read a => ReadPrec (ParamDecl' a)
readPrec :: ReadPrec (ParamDecl' a)
$creadListPrec :: forall a. Read a => ReadPrec [ParamDecl' a]
readListPrec :: ReadPrec [ParamDecl' a]
C.Read, (forall a b. (a -> b) -> ParamDecl' a -> ParamDecl' b)
-> (forall a b. a -> ParamDecl' b -> ParamDecl' a)
-> Functor ParamDecl'
forall a b. a -> ParamDecl' b -> ParamDecl' a
forall a b. (a -> b) -> ParamDecl' a -> ParamDecl' 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) -> ParamDecl' a -> ParamDecl' b
fmap :: forall a b. (a -> b) -> ParamDecl' a -> ParamDecl' b
$c<$ :: forall a b. a -> ParamDecl' b -> ParamDecl' a
<$ :: forall a b. a -> ParamDecl' b -> ParamDecl' a
C.Functor, (forall m. Monoid m => ParamDecl' m -> m)
-> (forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m)
-> (forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m)
-> (forall a b. (a -> b -> b) -> b -> ParamDecl' a -> b)
-> (forall a b. (a -> b -> b) -> b -> ParamDecl' a -> b)
-> (forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b)
-> (forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b)
-> (forall a. (a -> a -> a) -> ParamDecl' a -> a)
-> (forall a. (a -> a -> a) -> ParamDecl' a -> a)
-> (forall a. ParamDecl' a -> [a])
-> (forall a. ParamDecl' a -> Bool)
-> (forall a. ParamDecl' a -> Int)
-> (forall a. Eq a => a -> ParamDecl' a -> Bool)
-> (forall a. Ord a => ParamDecl' a -> a)
-> (forall a. Ord a => ParamDecl' a -> a)
-> (forall a. Num a => ParamDecl' a -> a)
-> (forall a. Num a => ParamDecl' a -> a)
-> Foldable ParamDecl'
forall a. Eq a => a -> ParamDecl' a -> Bool
forall a. Num a => ParamDecl' a -> a
forall a. Ord a => ParamDecl' a -> a
forall m. Monoid m => ParamDecl' m -> m
forall a. ParamDecl' a -> Bool
forall a. ParamDecl' a -> Int
forall a. ParamDecl' a -> [a]
forall a. (a -> a -> a) -> ParamDecl' a -> a
forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m
forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b
forall a b. (a -> b -> b) -> b -> ParamDecl' 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 => ParamDecl' m -> m
fold :: forall m. Monoid m => ParamDecl' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> ParamDecl' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> ParamDecl' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> ParamDecl' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> ParamDecl' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> ParamDecl' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> ParamDecl' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> ParamDecl' a -> a
foldr1 :: forall a. (a -> a -> a) -> ParamDecl' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> ParamDecl' a -> a
foldl1 :: forall a. (a -> a -> a) -> ParamDecl' a -> a
$ctoList :: forall a. ParamDecl' a -> [a]
toList :: forall a. ParamDecl' a -> [a]
$cnull :: forall a. ParamDecl' a -> Bool
null :: forall a. ParamDecl' a -> Bool
$clength :: forall a. ParamDecl' a -> Int
length :: forall a. ParamDecl' a -> Int
$celem :: forall a. Eq a => a -> ParamDecl' a -> Bool
elem :: forall a. Eq a => a -> ParamDecl' a -> Bool
$cmaximum :: forall a. Ord a => ParamDecl' a -> a
maximum :: forall a. Ord a => ParamDecl' a -> a
$cminimum :: forall a. Ord a => ParamDecl' a -> a
minimum :: forall a. Ord a => ParamDecl' a -> a
$csum :: forall a. Num a => ParamDecl' a -> a
sum :: forall a. Num a => ParamDecl' a -> a
$cproduct :: forall a. Num a => ParamDecl' a -> a
product :: forall a. Num a => ParamDecl' a -> a
C.Foldable, Functor ParamDecl'
Foldable ParamDecl'
(Functor ParamDecl', Foldable ParamDecl') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> ParamDecl' a -> f (ParamDecl' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    ParamDecl' (f a) -> f (ParamDecl' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> ParamDecl' a -> m (ParamDecl' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    ParamDecl' (m a) -> m (ParamDecl' a))
-> Traversable ParamDecl'
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 =>
ParamDecl' (m a) -> m (ParamDecl' a)
forall (f :: * -> *) a.
Applicative f =>
ParamDecl' (f a) -> f (ParamDecl' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParamDecl' a -> m (ParamDecl' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParamDecl' a -> f (ParamDecl' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParamDecl' a -> f (ParamDecl' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParamDecl' a -> f (ParamDecl' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
ParamDecl' (f a) -> f (ParamDecl' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
ParamDecl' (f a) -> f (ParamDecl' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParamDecl' a -> m (ParamDecl' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParamDecl' a -> m (ParamDecl' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
ParamDecl' (m a) -> m (ParamDecl' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
ParamDecl' (m a) -> m (ParamDecl' a)
C.Traversable, Typeable (ParamDecl' a)
Typeable (ParamDecl' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> ParamDecl' a -> c (ParamDecl' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (ParamDecl' a))
-> (ParamDecl' a -> Constr)
-> (ParamDecl' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (ParamDecl' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (ParamDecl' a)))
-> ((forall b. Data b => b -> b) -> ParamDecl' a -> ParamDecl' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> ParamDecl' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> ParamDecl' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a))
-> Data (ParamDecl' a)
ParamDecl' a -> Constr
ParamDecl' a -> DataType
(forall b. Data b => b -> b) -> ParamDecl' a -> ParamDecl' a
forall a. Data a => Typeable (ParamDecl' a)
forall a. Data a => ParamDecl' a -> Constr
forall a. Data a => ParamDecl' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> ParamDecl' a -> ParamDecl' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> ParamDecl' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> ParamDecl' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ParamDecl' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParamDecl' a -> c (ParamDecl' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (ParamDecl' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ParamDecl' a))
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) -> ParamDecl' a -> u
forall u. (forall d. Data d => d -> u) -> ParamDecl' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ParamDecl' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParamDecl' a -> c (ParamDecl' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ParamDecl' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ParamDecl' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParamDecl' a -> c (ParamDecl' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParamDecl' a -> c (ParamDecl' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ParamDecl' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ParamDecl' a)
$ctoConstr :: forall a. Data a => ParamDecl' a -> Constr
toConstr :: ParamDecl' a -> Constr
$cdataTypeOf :: forall a. Data a => ParamDecl' a -> DataType
dataTypeOf :: ParamDecl' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (ParamDecl' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ParamDecl' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ParamDecl' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ParamDecl' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> ParamDecl' a -> ParamDecl' a
gmapT :: (forall b. Data b => b -> b) -> ParamDecl' a -> ParamDecl' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParamDecl' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> ParamDecl' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> ParamDecl' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> ParamDecl' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ParamDecl' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParamDecl' a -> m (ParamDecl' a)
C.Data, C.Typeable, (forall x. ParamDecl' a -> Rep (ParamDecl' a) x)
-> (forall x. Rep (ParamDecl' a) x -> ParamDecl' a)
-> Generic (ParamDecl' a)
forall x. Rep (ParamDecl' a) x -> ParamDecl' a
forall x. ParamDecl' a -> Rep (ParamDecl' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (ParamDecl' a) x -> ParamDecl' a
forall a x. ParamDecl' a -> Rep (ParamDecl' a) x
$cfrom :: forall a x. ParamDecl' a -> Rep (ParamDecl' a) x
from :: forall x. ParamDecl' a -> Rep (ParamDecl' a) x
$cto :: forall a x. Rep (ParamDecl' a) x -> ParamDecl' a
to :: forall x. Rep (ParamDecl' a) x -> ParamDecl' a
C.Generic)

type Restriction = Restriction' BNFC'Position
data Restriction' a
    = Restriction a (Term' a) (Term' a)
    | ASCII_Restriction a (Term' a) (Term' a)
  deriving (Restriction' a -> Restriction' a -> Bool
(Restriction' a -> Restriction' a -> Bool)
-> (Restriction' a -> Restriction' a -> Bool)
-> Eq (Restriction' a)
forall a. Eq a => Restriction' a -> Restriction' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Restriction' a -> Restriction' a -> Bool
== :: Restriction' a -> Restriction' a -> Bool
$c/= :: forall a. Eq a => Restriction' a -> Restriction' a -> Bool
/= :: Restriction' a -> Restriction' a -> Bool
C.Eq, Eq (Restriction' a)
Eq (Restriction' a) =>
(Restriction' a -> Restriction' a -> Ordering)
-> (Restriction' a -> Restriction' a -> Bool)
-> (Restriction' a -> Restriction' a -> Bool)
-> (Restriction' a -> Restriction' a -> Bool)
-> (Restriction' a -> Restriction' a -> Bool)
-> (Restriction' a -> Restriction' a -> Restriction' a)
-> (Restriction' a -> Restriction' a -> Restriction' a)
-> Ord (Restriction' a)
Restriction' a -> Restriction' a -> Bool
Restriction' a -> Restriction' a -> Ordering
Restriction' a -> Restriction' a -> Restriction' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Restriction' a)
forall a. Ord a => Restriction' a -> Restriction' a -> Bool
forall a. Ord a => Restriction' a -> Restriction' a -> Ordering
forall a.
Ord a =>
Restriction' a -> Restriction' a -> Restriction' a
$ccompare :: forall a. Ord a => Restriction' a -> Restriction' a -> Ordering
compare :: Restriction' a -> Restriction' a -> Ordering
$c< :: forall a. Ord a => Restriction' a -> Restriction' a -> Bool
< :: Restriction' a -> Restriction' a -> Bool
$c<= :: forall a. Ord a => Restriction' a -> Restriction' a -> Bool
<= :: Restriction' a -> Restriction' a -> Bool
$c> :: forall a. Ord a => Restriction' a -> Restriction' a -> Bool
> :: Restriction' a -> Restriction' a -> Bool
$c>= :: forall a. Ord a => Restriction' a -> Restriction' a -> Bool
>= :: Restriction' a -> Restriction' a -> Bool
$cmax :: forall a.
Ord a =>
Restriction' a -> Restriction' a -> Restriction' a
max :: Restriction' a -> Restriction' a -> Restriction' a
$cmin :: forall a.
Ord a =>
Restriction' a -> Restriction' a -> Restriction' a
min :: Restriction' a -> Restriction' a -> Restriction' a
C.Ord, Int -> Restriction' a -> ShowS
[Restriction' a] -> ShowS
Restriction' a -> String
(Int -> Restriction' a -> ShowS)
-> (Restriction' a -> String)
-> ([Restriction' a] -> ShowS)
-> Show (Restriction' a)
forall a. Show a => Int -> Restriction' a -> ShowS
forall a. Show a => [Restriction' a] -> ShowS
forall a. Show a => Restriction' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Restriction' a -> ShowS
showsPrec :: Int -> Restriction' a -> ShowS
$cshow :: forall a. Show a => Restriction' a -> String
show :: Restriction' a -> String
$cshowList :: forall a. Show a => [Restriction' a] -> ShowS
showList :: [Restriction' a] -> ShowS
C.Show, ReadPrec [Restriction' a]
ReadPrec (Restriction' a)
Int -> ReadS (Restriction' a)
ReadS [Restriction' a]
(Int -> ReadS (Restriction' a))
-> ReadS [Restriction' a]
-> ReadPrec (Restriction' a)
-> ReadPrec [Restriction' a]
-> Read (Restriction' a)
forall a. Read a => ReadPrec [Restriction' a]
forall a. Read a => ReadPrec (Restriction' a)
forall a. Read a => Int -> ReadS (Restriction' a)
forall a. Read a => ReadS [Restriction' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Restriction' a)
readsPrec :: Int -> ReadS (Restriction' a)
$creadList :: forall a. Read a => ReadS [Restriction' a]
readList :: ReadS [Restriction' a]
$creadPrec :: forall a. Read a => ReadPrec (Restriction' a)
readPrec :: ReadPrec (Restriction' a)
$creadListPrec :: forall a. Read a => ReadPrec [Restriction' a]
readListPrec :: ReadPrec [Restriction' a]
C.Read, (forall a b. (a -> b) -> Restriction' a -> Restriction' b)
-> (forall a b. a -> Restriction' b -> Restriction' a)
-> Functor Restriction'
forall a b. a -> Restriction' b -> Restriction' a
forall a b. (a -> b) -> Restriction' a -> Restriction' 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) -> Restriction' a -> Restriction' b
fmap :: forall a b. (a -> b) -> Restriction' a -> Restriction' b
$c<$ :: forall a b. a -> Restriction' b -> Restriction' a
<$ :: forall a b. a -> Restriction' b -> Restriction' a
C.Functor, (forall m. Monoid m => Restriction' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Restriction' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Restriction' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Restriction' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Restriction' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Restriction' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Restriction' a -> b)
-> (forall a. (a -> a -> a) -> Restriction' a -> a)
-> (forall a. (a -> a -> a) -> Restriction' a -> a)
-> (forall a. Restriction' a -> [a])
-> (forall a. Restriction' a -> Bool)
-> (forall a. Restriction' a -> Int)
-> (forall a. Eq a => a -> Restriction' a -> Bool)
-> (forall a. Ord a => Restriction' a -> a)
-> (forall a. Ord a => Restriction' a -> a)
-> (forall a. Num a => Restriction' a -> a)
-> (forall a. Num a => Restriction' a -> a)
-> Foldable Restriction'
forall a. Eq a => a -> Restriction' a -> Bool
forall a. Num a => Restriction' a -> a
forall a. Ord a => Restriction' a -> a
forall m. Monoid m => Restriction' m -> m
forall a. Restriction' a -> Bool
forall a. Restriction' a -> Int
forall a. Restriction' a -> [a]
forall a. (a -> a -> a) -> Restriction' a -> a
forall m a. Monoid m => (a -> m) -> Restriction' a -> m
forall b a. (b -> a -> b) -> b -> Restriction' a -> b
forall a b. (a -> b -> b) -> b -> Restriction' 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 => Restriction' m -> m
fold :: forall m. Monoid m => Restriction' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Restriction' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Restriction' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Restriction' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Restriction' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Restriction' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Restriction' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Restriction' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Restriction' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Restriction' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Restriction' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Restriction' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Restriction' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Restriction' a -> a
foldr1 :: forall a. (a -> a -> a) -> Restriction' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Restriction' a -> a
foldl1 :: forall a. (a -> a -> a) -> Restriction' a -> a
$ctoList :: forall a. Restriction' a -> [a]
toList :: forall a. Restriction' a -> [a]
$cnull :: forall a. Restriction' a -> Bool
null :: forall a. Restriction' a -> Bool
$clength :: forall a. Restriction' a -> Int
length :: forall a. Restriction' a -> Int
$celem :: forall a. Eq a => a -> Restriction' a -> Bool
elem :: forall a. Eq a => a -> Restriction' a -> Bool
$cmaximum :: forall a. Ord a => Restriction' a -> a
maximum :: forall a. Ord a => Restriction' a -> a
$cminimum :: forall a. Ord a => Restriction' a -> a
minimum :: forall a. Ord a => Restriction' a -> a
$csum :: forall a. Num a => Restriction' a -> a
sum :: forall a. Num a => Restriction' a -> a
$cproduct :: forall a. Num a => Restriction' a -> a
product :: forall a. Num a => Restriction' a -> a
C.Foldable, Functor Restriction'
Foldable Restriction'
(Functor Restriction', Foldable Restriction') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Restriction' a -> f (Restriction' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Restriction' (f a) -> f (Restriction' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Restriction' a -> m (Restriction' b))
-> (forall (m :: * -> *) a.
    Monad m =>
    Restriction' (m a) -> m (Restriction' a))
-> Traversable Restriction'
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 =>
Restriction' (m a) -> m (Restriction' a)
forall (f :: * -> *) a.
Applicative f =>
Restriction' (f a) -> f (Restriction' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Restriction' a -> m (Restriction' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Restriction' a -> f (Restriction' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Restriction' a -> f (Restriction' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Restriction' a -> f (Restriction' b)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
Restriction' (f a) -> f (Restriction' a)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Restriction' (f a) -> f (Restriction' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Restriction' a -> m (Restriction' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Restriction' a -> m (Restriction' b)
$csequence :: forall (m :: * -> *) a.
Monad m =>
Restriction' (m a) -> m (Restriction' a)
sequence :: forall (m :: * -> *) a.
Monad m =>
Restriction' (m a) -> m (Restriction' a)
C.Traversable, Typeable (Restriction' a)
Typeable (Restriction' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Restriction' a -> c (Restriction' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Restriction' a))
-> (Restriction' a -> Constr)
-> (Restriction' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Restriction' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (Restriction' a)))
-> ((forall b. Data b => b -> b)
    -> Restriction' a -> Restriction' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Restriction' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Restriction' a -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> Restriction' a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> Restriction' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> Restriction' a -> m (Restriction' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> Restriction' a -> m (Restriction' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> Restriction' a -> m (Restriction' a))
-> Data (Restriction' a)
Restriction' a -> Constr
Restriction' a -> DataType
(forall b. Data b => b -> b) -> Restriction' a -> Restriction' a
forall a. Data a => Typeable (Restriction' a)
forall a. Data a => Restriction' a -> Constr
forall a. Data a => Restriction' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Restriction' a -> Restriction' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Restriction' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Restriction' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Restriction' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Restriction' a -> c (Restriction' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Restriction' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Restriction' a))
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) -> Restriction' a -> u
forall u. (forall d. Data d => d -> u) -> Restriction' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Restriction' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Restriction' a -> c (Restriction' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Restriction' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Restriction' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Restriction' a -> c (Restriction' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Restriction' a -> c (Restriction' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Restriction' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Restriction' a)
$ctoConstr :: forall a. Data a => Restriction' a -> Constr
toConstr :: Restriction' a -> Constr
$cdataTypeOf :: forall a. Data a => Restriction' a -> DataType
dataTypeOf :: Restriction' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Restriction' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Restriction' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Restriction' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Restriction' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Restriction' a -> Restriction' a
gmapT :: (forall b. Data b => b -> b) -> Restriction' a -> Restriction' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Restriction' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Restriction' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Restriction' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Restriction' a -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> Restriction' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> Restriction' a -> m (Restriction' a)
C.Data, C.Typeable, (forall x. Restriction' a -> Rep (Restriction' a) x)
-> (forall x. Rep (Restriction' a) x -> Restriction' a)
-> Generic (Restriction' a)
forall x. Rep (Restriction' a) x -> Restriction' a
forall x. Restriction' a -> Rep (Restriction' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Restriction' a) x -> Restriction' a
forall a x. Restriction' a -> Rep (Restriction' a) x
$cfrom :: forall a x. Restriction' a -> Rep (Restriction' a) x
from :: forall x. Restriction' a -> Rep (Restriction' a) x
$cto :: forall a x. Rep (Restriction' a) x -> Restriction' a
to :: forall x. Rep (Restriction' a) x -> Restriction' a
C.Generic)

type Term = Term' BNFC'Position
data Term' a
    = Universe a
    | UniverseCube a
    | UniverseTope a
    | CubeUnit a
    | CubeUnitStar a
    | Cube2 a
    | Cube2_0 a
    | Cube2_1 a
    | CubeProduct a (Term' a) (Term' a)
    | TopeTop a
    | TopeBottom a
    | TopeEQ a (Term' a) (Term' a)
    | TopeLEQ a (Term' a) (Term' a)
    | TopeAnd a (Term' a) (Term' a)
    | TopeOr a (Term' a) (Term' a)
    | RecBottom a
    | RecOr a [Restriction' a]
    | RecOrDeprecated a (Term' a) (Term' a) (Term' a) (Term' a)
    | TypeFun a (ParamDecl' a) (Term' a)
    | TypeSigma a (Pattern' a) (Term' a) (Term' a)
    | TypeUnit a
    | TypeId a (Term' a) (Term' a) (Term' a)
    | TypeIdSimple a (Term' a) (Term' a)
    | TypeRestricted a (Term' a) [Restriction' a]
    | TypeExtensionDeprecated a (ParamDecl' a) (Term' a)
    | App a (Term' a) (Term' a)
    | Lambda a [Param' a] (Term' a)
    | Pair a (Term' a) (Term' a)
    | First a (Term' a)
    | Second a (Term' a)
    | Unit a
    | Refl a
    | ReflTerm a (Term' a)
    | ReflTermType a (Term' a) (Term' a)
    | IdJ a (Term' a) (Term' a) (Term' a) (Term' a) (Term' a) (Term' a)
    | Hole a (HoleIdent' a)
    | Var a (VarIdent' a)
    | TypeAsc a (Term' a) (Term' a)
    | ASCII_CubeUnitStar a
    | ASCII_Cube2_0 a
    | ASCII_Cube2_1 a
    | ASCII_TopeTop a
    | ASCII_TopeBottom a
    | ASCII_TopeEQ a (Term' a) (Term' a)
    | ASCII_TopeLEQ a (Term' a) (Term' a)
    | ASCII_TopeAnd a (Term' a) (Term' a)
    | ASCII_TopeOr a (Term' a) (Term' a)
    | ASCII_TypeFun a (ParamDecl' a) (Term' a)
    | ASCII_TypeSigma a (Pattern' a) (Term' a) (Term' a)
    | ASCII_Lambda a [Param' a] (Term' a)
    | ASCII_TypeExtensionDeprecated a (ParamDecl' a) (Term' a)
    | ASCII_First a (Term' a)
    | ASCII_Second a (Term' a)
  deriving (Term' a -> Term' a -> Bool
(Term' a -> Term' a -> Bool)
-> (Term' a -> Term' a -> Bool) -> Eq (Term' a)
forall a. Eq a => Term' a -> Term' a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Term' a -> Term' a -> Bool
== :: Term' a -> Term' a -> Bool
$c/= :: forall a. Eq a => Term' a -> Term' a -> Bool
/= :: Term' a -> Term' a -> Bool
C.Eq, Eq (Term' a)
Eq (Term' a) =>
(Term' a -> Term' a -> Ordering)
-> (Term' a -> Term' a -> Bool)
-> (Term' a -> Term' a -> Bool)
-> (Term' a -> Term' a -> Bool)
-> (Term' a -> Term' a -> Bool)
-> (Term' a -> Term' a -> Term' a)
-> (Term' a -> Term' a -> Term' a)
-> Ord (Term' a)
Term' a -> Term' a -> Bool
Term' a -> Term' a -> Ordering
Term' a -> Term' a -> Term' a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Term' a)
forall a. Ord a => Term' a -> Term' a -> Bool
forall a. Ord a => Term' a -> Term' a -> Ordering
forall a. Ord a => Term' a -> Term' a -> Term' a
$ccompare :: forall a. Ord a => Term' a -> Term' a -> Ordering
compare :: Term' a -> Term' a -> Ordering
$c< :: forall a. Ord a => Term' a -> Term' a -> Bool
< :: Term' a -> Term' a -> Bool
$c<= :: forall a. Ord a => Term' a -> Term' a -> Bool
<= :: Term' a -> Term' a -> Bool
$c> :: forall a. Ord a => Term' a -> Term' a -> Bool
> :: Term' a -> Term' a -> Bool
$c>= :: forall a. Ord a => Term' a -> Term' a -> Bool
>= :: Term' a -> Term' a -> Bool
$cmax :: forall a. Ord a => Term' a -> Term' a -> Term' a
max :: Term' a -> Term' a -> Term' a
$cmin :: forall a. Ord a => Term' a -> Term' a -> Term' a
min :: Term' a -> Term' a -> Term' a
C.Ord, Int -> Term' a -> ShowS
[Term' a] -> ShowS
Term' a -> String
(Int -> Term' a -> ShowS)
-> (Term' a -> String) -> ([Term' a] -> ShowS) -> Show (Term' a)
forall a. Show a => Int -> Term' a -> ShowS
forall a. Show a => [Term' a] -> ShowS
forall a. Show a => Term' a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Term' a -> ShowS
showsPrec :: Int -> Term' a -> ShowS
$cshow :: forall a. Show a => Term' a -> String
show :: Term' a -> String
$cshowList :: forall a. Show a => [Term' a] -> ShowS
showList :: [Term' a] -> ShowS
C.Show, ReadPrec [Term' a]
ReadPrec (Term' a)
Int -> ReadS (Term' a)
ReadS [Term' a]
(Int -> ReadS (Term' a))
-> ReadS [Term' a]
-> ReadPrec (Term' a)
-> ReadPrec [Term' a]
-> Read (Term' a)
forall a. Read a => ReadPrec [Term' a]
forall a. Read a => ReadPrec (Term' a)
forall a. Read a => Int -> ReadS (Term' a)
forall a. Read a => ReadS [Term' a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (Term' a)
readsPrec :: Int -> ReadS (Term' a)
$creadList :: forall a. Read a => ReadS [Term' a]
readList :: ReadS [Term' a]
$creadPrec :: forall a. Read a => ReadPrec (Term' a)
readPrec :: ReadPrec (Term' a)
$creadListPrec :: forall a. Read a => ReadPrec [Term' a]
readListPrec :: ReadPrec [Term' a]
C.Read, (forall a b. (a -> b) -> Term' a -> Term' b)
-> (forall a b. a -> Term' b -> Term' a) -> Functor Term'
forall a b. a -> Term' b -> Term' a
forall a b. (a -> b) -> Term' a -> Term' 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) -> Term' a -> Term' b
fmap :: forall a b. (a -> b) -> Term' a -> Term' b
$c<$ :: forall a b. a -> Term' b -> Term' a
<$ :: forall a b. a -> Term' b -> Term' a
C.Functor, (forall m. Monoid m => Term' m -> m)
-> (forall m a. Monoid m => (a -> m) -> Term' a -> m)
-> (forall m a. Monoid m => (a -> m) -> Term' a -> m)
-> (forall a b. (a -> b -> b) -> b -> Term' a -> b)
-> (forall a b. (a -> b -> b) -> b -> Term' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Term' a -> b)
-> (forall b a. (b -> a -> b) -> b -> Term' a -> b)
-> (forall a. (a -> a -> a) -> Term' a -> a)
-> (forall a. (a -> a -> a) -> Term' a -> a)
-> (forall a. Term' a -> [a])
-> (forall a. Term' a -> Bool)
-> (forall a. Term' a -> Int)
-> (forall a. Eq a => a -> Term' a -> Bool)
-> (forall a. Ord a => Term' a -> a)
-> (forall a. Ord a => Term' a -> a)
-> (forall a. Num a => Term' a -> a)
-> (forall a. Num a => Term' a -> a)
-> Foldable Term'
forall a. Eq a => a -> Term' a -> Bool
forall a. Num a => Term' a -> a
forall a. Ord a => Term' a -> a
forall m. Monoid m => Term' m -> m
forall a. Term' a -> Bool
forall a. Term' a -> Int
forall a. Term' a -> [a]
forall a. (a -> a -> a) -> Term' a -> a
forall m a. Monoid m => (a -> m) -> Term' a -> m
forall b a. (b -> a -> b) -> b -> Term' a -> b
forall a b. (a -> b -> b) -> b -> Term' 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 => Term' m -> m
fold :: forall m. Monoid m => Term' m -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> Term' a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Term' a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> Term' a -> m
foldMap' :: forall m a. Monoid m => (a -> m) -> Term' a -> m
$cfoldr :: forall a b. (a -> b -> b) -> b -> Term' a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Term' a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> Term' a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Term' a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> Term' a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Term' a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> Term' a -> b
foldl' :: forall b a. (b -> a -> b) -> b -> Term' a -> b
$cfoldr1 :: forall a. (a -> a -> a) -> Term' a -> a
foldr1 :: forall a. (a -> a -> a) -> Term' a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> Term' a -> a
foldl1 :: forall a. (a -> a -> a) -> Term' a -> a
$ctoList :: forall a. Term' a -> [a]
toList :: forall a. Term' a -> [a]
$cnull :: forall a. Term' a -> Bool
null :: forall a. Term' a -> Bool
$clength :: forall a. Term' a -> Int
length :: forall a. Term' a -> Int
$celem :: forall a. Eq a => a -> Term' a -> Bool
elem :: forall a. Eq a => a -> Term' a -> Bool
$cmaximum :: forall a. Ord a => Term' a -> a
maximum :: forall a. Ord a => Term' a -> a
$cminimum :: forall a. Ord a => Term' a -> a
minimum :: forall a. Ord a => Term' a -> a
$csum :: forall a. Num a => Term' a -> a
sum :: forall a. Num a => Term' a -> a
$cproduct :: forall a. Num a => Term' a -> a
product :: forall a. Num a => Term' a -> a
C.Foldable, Functor Term'
Foldable Term'
(Functor Term', Foldable Term') =>
(forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Term' a -> f (Term' b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    Term' (f a) -> f (Term' a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> Term' a -> m (Term' b))
-> (forall (m :: * -> *) a. Monad m => Term' (m a) -> m (Term' a))
-> Traversable Term'
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 => Term' (m a) -> m (Term' a)
forall (f :: * -> *) a. Applicative f => Term' (f a) -> f (Term' a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Term' a -> m (Term' b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Term' a -> f (Term' b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Term' a -> f (Term' b)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Term' a -> f (Term' b)
$csequenceA :: forall (f :: * -> *) a. Applicative f => Term' (f a) -> f (Term' a)
sequenceA :: forall (f :: * -> *) a. Applicative f => Term' (f a) -> f (Term' a)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Term' a -> m (Term' b)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Term' a -> m (Term' b)
$csequence :: forall (m :: * -> *) a. Monad m => Term' (m a) -> m (Term' a)
sequence :: forall (m :: * -> *) a. Monad m => Term' (m a) -> m (Term' a)
C.Traversable, Typeable (Term' a)
Typeable (Term' a) =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> Term' a -> c (Term' a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (Term' a))
-> (Term' a -> Constr)
-> (Term' a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (Term' a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Term' a)))
-> ((forall b. Data b => b -> b) -> Term' a -> Term' a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Term' a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Term' a -> r)
-> (forall u. (forall d. Data d => d -> u) -> Term' a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Term' a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Term' a -> m (Term' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Term' a -> m (Term' a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Term' a -> m (Term' a))
-> Data (Term' a)
Term' a -> Constr
Term' a -> DataType
(forall b. Data b => b -> b) -> Term' a -> Term' a
forall a. Data a => Typeable (Term' a)
forall a. Data a => Term' a -> Constr
forall a. Data a => Term' a -> DataType
forall a.
Data a =>
(forall b. Data b => b -> b) -> Term' a -> Term' a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Term' a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> Term' a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Term' a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Term' a -> c (Term' a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Term' a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Term' a))
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) -> Term' a -> u
forall u. (forall d. Data d => d -> u) -> Term' a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Term' a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Term' a -> c (Term' a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Term' a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Term' a))
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Term' a -> c (Term' a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Term' a -> c (Term' a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Term' a)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Term' a)
$ctoConstr :: forall a. Data a => Term' a -> Constr
toConstr :: Term' a -> Constr
$cdataTypeOf :: forall a. Data a => Term' a -> DataType
dataTypeOf :: Term' a -> DataType
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Term' a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Term' a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Term' a))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Term' a))
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> Term' a -> Term' a
gmapT :: (forall b. Data b => b -> b) -> Term' a -> Term' a
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Term' a -> r
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> Term' a -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Term' a -> [u]
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> Term' a -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Term' a -> u
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Term' a -> m (Term' a)
C.Data, C.Typeable, (forall x. Term' a -> Rep (Term' a) x)
-> (forall x. Rep (Term' a) x -> Term' a) -> Generic (Term' a)
forall x. Rep (Term' a) x -> Term' a
forall x. Term' a -> Rep (Term' a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Term' a) x -> Term' a
forall a x. Term' a -> Rep (Term' a) x
$cfrom :: forall a x. Term' a -> Rep (Term' a) x
from :: forall x. Term' a -> Rep (Term' a) x
$cto :: forall a x. Rep (Term' a) x -> Term' a
to :: forall x. Rep (Term' a) x -> Term' a
C.Generic)

commandPostulateNoParams :: a -> VarIdent' a -> DeclUsedVars' a -> Term' a -> Command' a
commandPostulateNoParams :: forall a.
a -> VarIdent' a -> DeclUsedVars' a -> Term' a -> Command' a
commandPostulateNoParams = \ a
_a VarIdent' a
x DeclUsedVars' a
vars Term' a
ty -> a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Command' a
forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Command' a
CommandPostulate a
_a VarIdent' a
x DeclUsedVars' a
vars [] Term' a
ty

commandVariable :: a -> VarIdent' a -> Term' a -> Command' a
commandVariable :: forall a. a -> VarIdent' a -> Term' a -> Command' a
commandVariable = \ a
_a VarIdent' a
name Term' a
term -> a -> [VarIdent' a] -> Term' a -> Command' a
forall a. a -> [VarIdent' a] -> Term' a -> Command' a
CommandAssume a
_a [VarIdent' a
name] Term' a
term

commandVariables :: a -> [VarIdent' a] -> Term' a -> Command' a
commandVariables :: forall a. a -> [VarIdent' a] -> Term' a -> Command' a
commandVariables = \ a
_a [VarIdent' a]
names Term' a
term -> a -> [VarIdent' a] -> Term' a -> Command' a
forall a. a -> [VarIdent' a] -> Term' a -> Command' a
CommandAssume a
_a [VarIdent' a]
names Term' a
term

commandDefineNoParams :: a -> VarIdent' a -> DeclUsedVars' a -> Term' a -> Term' a -> Command' a
commandDefineNoParams :: forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> Term' a
-> Term' a
-> Command' a
commandDefineNoParams = \ a
_a VarIdent' a
x DeclUsedVars' a
vars Term' a
ty Term' a
term -> a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
CommandDefine a
_a VarIdent' a
x DeclUsedVars' a
vars [] Term' a
ty Term' a
term

commandDef :: a -> VarIdent' a -> DeclUsedVars' a -> [Param' a] -> Term' a -> Term' a -> Command' a
commandDef :: forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
commandDef = \ a
_a VarIdent' a
x DeclUsedVars' a
vars [Param' a]
params Term' a
ty Term' a
term -> a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
CommandDefine a
_a VarIdent' a
x DeclUsedVars' a
vars [Param' a]
params Term' a
ty Term' a
term

commandDefNoParams :: a -> VarIdent' a -> DeclUsedVars' a -> Term' a -> Term' a -> Command' a
commandDefNoParams :: forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> Term' a
-> Term' a
-> Command' a
commandDefNoParams = \ a
_a VarIdent' a
x DeclUsedVars' a
vars Term' a
ty Term' a
term -> a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
forall a.
a
-> VarIdent' a
-> DeclUsedVars' a
-> [Param' a]
-> Term' a
-> Term' a
-> Command' a
CommandDefine a
_a VarIdent' a
x DeclUsedVars' a
vars [] Term' a
ty Term' a
term

noDeclUsedVars :: a -> DeclUsedVars' a
noDeclUsedVars :: forall a. a -> DeclUsedVars' a
noDeclUsedVars = \ a
_a -> a -> [VarIdent' a] -> DeclUsedVars' a
forall a. a -> [VarIdent' a] -> DeclUsedVars' a
DeclUsedVars a
_a []

paramVarShapeDeprecated :: a -> Pattern' a -> Term' a -> Term' a -> ParamDecl' a
paramVarShapeDeprecated :: forall a. a -> Pattern' a -> Term' a -> Term' a -> ParamDecl' a
paramVarShapeDeprecated = \ a
_a Pattern' a
pat Term' a
cube Term' a
tope -> a -> Pattern' a -> Term' a -> Term' a -> ParamDecl' a
forall a. a -> Pattern' a -> Term' a -> Term' a -> ParamDecl' a
ParamVarShapeDeprecated a
_a Pattern' a
pat Term' a
cube Term' a
tope

ascii_CubeProduct :: a -> Term' a -> Term' a -> Term' a
ascii_CubeProduct :: forall a. a -> Term' a -> Term' a -> Term' a
ascii_CubeProduct = \ a
_a Term' a
l Term' a
r -> a -> Term' a -> Term' a -> Term' a
forall a. a -> Term' a -> Term' a -> Term' a
CubeProduct a
_a Term' a
l Term' a
r

unicode_TypeSigmaAlt :: a -> Pattern' a -> Term' a -> Term' a -> Term' a
unicode_TypeSigmaAlt :: forall a. a -> Pattern' a -> Term' a -> Term' a -> Term' a
unicode_TypeSigmaAlt = \ a
_a Pattern' a
pat Term' a
fst Term' a
snd -> a -> Pattern' a -> Term' a -> Term' a -> Term' a
forall a. a -> Pattern' a -> Term' a -> Term' a -> Term' a
TypeSigma a
_a Pattern' a
pat Term' a
fst Term' a
snd

newtype VarIdentToken = VarIdentToken String
  deriving (VarIdentToken -> VarIdentToken -> Bool
(VarIdentToken -> VarIdentToken -> Bool)
-> (VarIdentToken -> VarIdentToken -> Bool) -> Eq VarIdentToken
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VarIdentToken -> VarIdentToken -> Bool
== :: VarIdentToken -> VarIdentToken -> Bool
$c/= :: VarIdentToken -> VarIdentToken -> Bool
/= :: VarIdentToken -> VarIdentToken -> Bool
C.Eq, Eq VarIdentToken
Eq VarIdentToken =>
(VarIdentToken -> VarIdentToken -> Ordering)
-> (VarIdentToken -> VarIdentToken -> Bool)
-> (VarIdentToken -> VarIdentToken -> Bool)
-> (VarIdentToken -> VarIdentToken -> Bool)
-> (VarIdentToken -> VarIdentToken -> Bool)
-> (VarIdentToken -> VarIdentToken -> VarIdentToken)
-> (VarIdentToken -> VarIdentToken -> VarIdentToken)
-> Ord VarIdentToken
VarIdentToken -> VarIdentToken -> Bool
VarIdentToken -> VarIdentToken -> Ordering
VarIdentToken -> VarIdentToken -> VarIdentToken
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: VarIdentToken -> VarIdentToken -> Ordering
compare :: VarIdentToken -> VarIdentToken -> Ordering
$c< :: VarIdentToken -> VarIdentToken -> Bool
< :: VarIdentToken -> VarIdentToken -> Bool
$c<= :: VarIdentToken -> VarIdentToken -> Bool
<= :: VarIdentToken -> VarIdentToken -> Bool
$c> :: VarIdentToken -> VarIdentToken -> Bool
> :: VarIdentToken -> VarIdentToken -> Bool
$c>= :: VarIdentToken -> VarIdentToken -> Bool
>= :: VarIdentToken -> VarIdentToken -> Bool
$cmax :: VarIdentToken -> VarIdentToken -> VarIdentToken
max :: VarIdentToken -> VarIdentToken -> VarIdentToken
$cmin :: VarIdentToken -> VarIdentToken -> VarIdentToken
min :: VarIdentToken -> VarIdentToken -> VarIdentToken
C.Ord, Int -> VarIdentToken -> ShowS
[VarIdentToken] -> ShowS
VarIdentToken -> String
(Int -> VarIdentToken -> ShowS)
-> (VarIdentToken -> String)
-> ([VarIdentToken] -> ShowS)
-> Show VarIdentToken
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VarIdentToken -> ShowS
showsPrec :: Int -> VarIdentToken -> ShowS
$cshow :: VarIdentToken -> String
show :: VarIdentToken -> String
$cshowList :: [VarIdentToken] -> ShowS
showList :: [VarIdentToken] -> ShowS
C.Show, ReadPrec [VarIdentToken]
ReadPrec VarIdentToken
Int -> ReadS VarIdentToken
ReadS [VarIdentToken]
(Int -> ReadS VarIdentToken)
-> ReadS [VarIdentToken]
-> ReadPrec VarIdentToken
-> ReadPrec [VarIdentToken]
-> Read VarIdentToken
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS VarIdentToken
readsPrec :: Int -> ReadS VarIdentToken
$creadList :: ReadS [VarIdentToken]
readList :: ReadS [VarIdentToken]
$creadPrec :: ReadPrec VarIdentToken
readPrec :: ReadPrec VarIdentToken
$creadListPrec :: ReadPrec [VarIdentToken]
readListPrec :: ReadPrec [VarIdentToken]
C.Read, Typeable VarIdentToken
Typeable VarIdentToken =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> VarIdentToken -> c VarIdentToken)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c VarIdentToken)
-> (VarIdentToken -> Constr)
-> (VarIdentToken -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c VarIdentToken))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c VarIdentToken))
-> ((forall b. Data b => b -> b) -> VarIdentToken -> VarIdentToken)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r)
-> (forall u. (forall d. Data d => d -> u) -> VarIdentToken -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> VarIdentToken -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken)
-> Data VarIdentToken
VarIdentToken -> Constr
VarIdentToken -> DataType
(forall b. Data b => b -> b) -> VarIdentToken -> VarIdentToken
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) -> VarIdentToken -> u
forall u. (forall d. Data d => d -> u) -> VarIdentToken -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VarIdentToken
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdentToken -> c VarIdentToken
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c VarIdentToken)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c VarIdentToken)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdentToken -> c VarIdentToken
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VarIdentToken -> c VarIdentToken
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VarIdentToken
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VarIdentToken
$ctoConstr :: VarIdentToken -> Constr
toConstr :: VarIdentToken -> Constr
$cdataTypeOf :: VarIdentToken -> DataType
dataTypeOf :: VarIdentToken -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c VarIdentToken)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c VarIdentToken)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c VarIdentToken)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c VarIdentToken)
$cgmapT :: (forall b. Data b => b -> b) -> VarIdentToken -> VarIdentToken
gmapT :: (forall b. Data b => b -> b) -> VarIdentToken -> VarIdentToken
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VarIdentToken -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> VarIdentToken -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> VarIdentToken -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> VarIdentToken -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> VarIdentToken -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VarIdentToken -> m VarIdentToken
C.Data, C.Typeable, (forall x. VarIdentToken -> Rep VarIdentToken x)
-> (forall x. Rep VarIdentToken x -> VarIdentToken)
-> Generic VarIdentToken
forall x. Rep VarIdentToken x -> VarIdentToken
forall x. VarIdentToken -> Rep VarIdentToken x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. VarIdentToken -> Rep VarIdentToken x
from :: forall x. VarIdentToken -> Rep VarIdentToken x
$cto :: forall x. Rep VarIdentToken x -> VarIdentToken
to :: forall x. Rep VarIdentToken x -> VarIdentToken
C.Generic, String -> VarIdentToken
(String -> VarIdentToken) -> IsString VarIdentToken
forall a. (String -> a) -> IsString a
$cfromString :: String -> VarIdentToken
fromString :: String -> VarIdentToken
Data.String.IsString)

newtype HoleIdentToken = HoleIdentToken String
  deriving (HoleIdentToken -> HoleIdentToken -> Bool
(HoleIdentToken -> HoleIdentToken -> Bool)
-> (HoleIdentToken -> HoleIdentToken -> Bool) -> Eq HoleIdentToken
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HoleIdentToken -> HoleIdentToken -> Bool
== :: HoleIdentToken -> HoleIdentToken -> Bool
$c/= :: HoleIdentToken -> HoleIdentToken -> Bool
/= :: HoleIdentToken -> HoleIdentToken -> Bool
C.Eq, Eq HoleIdentToken
Eq HoleIdentToken =>
(HoleIdentToken -> HoleIdentToken -> Ordering)
-> (HoleIdentToken -> HoleIdentToken -> Bool)
-> (HoleIdentToken -> HoleIdentToken -> Bool)
-> (HoleIdentToken -> HoleIdentToken -> Bool)
-> (HoleIdentToken -> HoleIdentToken -> Bool)
-> (HoleIdentToken -> HoleIdentToken -> HoleIdentToken)
-> (HoleIdentToken -> HoleIdentToken -> HoleIdentToken)
-> Ord HoleIdentToken
HoleIdentToken -> HoleIdentToken -> Bool
HoleIdentToken -> HoleIdentToken -> Ordering
HoleIdentToken -> HoleIdentToken -> HoleIdentToken
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: HoleIdentToken -> HoleIdentToken -> Ordering
compare :: HoleIdentToken -> HoleIdentToken -> Ordering
$c< :: HoleIdentToken -> HoleIdentToken -> Bool
< :: HoleIdentToken -> HoleIdentToken -> Bool
$c<= :: HoleIdentToken -> HoleIdentToken -> Bool
<= :: HoleIdentToken -> HoleIdentToken -> Bool
$c> :: HoleIdentToken -> HoleIdentToken -> Bool
> :: HoleIdentToken -> HoleIdentToken -> Bool
$c>= :: HoleIdentToken -> HoleIdentToken -> Bool
>= :: HoleIdentToken -> HoleIdentToken -> Bool
$cmax :: HoleIdentToken -> HoleIdentToken -> HoleIdentToken
max :: HoleIdentToken -> HoleIdentToken -> HoleIdentToken
$cmin :: HoleIdentToken -> HoleIdentToken -> HoleIdentToken
min :: HoleIdentToken -> HoleIdentToken -> HoleIdentToken
C.Ord, Int -> HoleIdentToken -> ShowS
[HoleIdentToken] -> ShowS
HoleIdentToken -> String
(Int -> HoleIdentToken -> ShowS)
-> (HoleIdentToken -> String)
-> ([HoleIdentToken] -> ShowS)
-> Show HoleIdentToken
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HoleIdentToken -> ShowS
showsPrec :: Int -> HoleIdentToken -> ShowS
$cshow :: HoleIdentToken -> String
show :: HoleIdentToken -> String
$cshowList :: [HoleIdentToken] -> ShowS
showList :: [HoleIdentToken] -> ShowS
C.Show, ReadPrec [HoleIdentToken]
ReadPrec HoleIdentToken
Int -> ReadS HoleIdentToken
ReadS [HoleIdentToken]
(Int -> ReadS HoleIdentToken)
-> ReadS [HoleIdentToken]
-> ReadPrec HoleIdentToken
-> ReadPrec [HoleIdentToken]
-> Read HoleIdentToken
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS HoleIdentToken
readsPrec :: Int -> ReadS HoleIdentToken
$creadList :: ReadS [HoleIdentToken]
readList :: ReadS [HoleIdentToken]
$creadPrec :: ReadPrec HoleIdentToken
readPrec :: ReadPrec HoleIdentToken
$creadListPrec :: ReadPrec [HoleIdentToken]
readListPrec :: ReadPrec [HoleIdentToken]
C.Read, Typeable HoleIdentToken
Typeable HoleIdentToken =>
(forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> HoleIdentToken -> c HoleIdentToken)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c HoleIdentToken)
-> (HoleIdentToken -> Constr)
-> (HoleIdentToken -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c HoleIdentToken))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c HoleIdentToken))
-> ((forall b. Data b => b -> b)
    -> HoleIdentToken -> HoleIdentToken)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> HoleIdentToken -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> HoleIdentToken -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> HoleIdentToken -> m HoleIdentToken)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> HoleIdentToken -> m HoleIdentToken)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> HoleIdentToken -> m HoleIdentToken)
-> Data HoleIdentToken
HoleIdentToken -> Constr
HoleIdentToken -> DataType
(forall b. Data b => b -> b) -> HoleIdentToken -> HoleIdentToken
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) -> HoleIdentToken -> u
forall u. (forall d. Data d => d -> u) -> HoleIdentToken -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HoleIdentToken
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdentToken -> c HoleIdentToken
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HoleIdentToken)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c HoleIdentToken)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdentToken -> c HoleIdentToken
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HoleIdentToken -> c HoleIdentToken
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HoleIdentToken
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HoleIdentToken
$ctoConstr :: HoleIdentToken -> Constr
toConstr :: HoleIdentToken -> Constr
$cdataTypeOf :: HoleIdentToken -> DataType
dataTypeOf :: HoleIdentToken -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HoleIdentToken)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HoleIdentToken)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c HoleIdentToken)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c HoleIdentToken)
$cgmapT :: (forall b. Data b => b -> b) -> HoleIdentToken -> HoleIdentToken
gmapT :: (forall b. Data b => b -> b) -> HoleIdentToken -> HoleIdentToken
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> HoleIdentToken -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> HoleIdentToken -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> HoleIdentToken -> [u]
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> HoleIdentToken -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> HoleIdentToken -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> HoleIdentToken -> m HoleIdentToken
C.Data, C.Typeable, (forall x. HoleIdentToken -> Rep HoleIdentToken x)
-> (forall x. Rep HoleIdentToken x -> HoleIdentToken)
-> Generic HoleIdentToken
forall x. Rep HoleIdentToken x -> HoleIdentToken
forall x. HoleIdentToken -> Rep HoleIdentToken x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. HoleIdentToken -> Rep HoleIdentToken x
from :: forall x. HoleIdentToken -> Rep HoleIdentToken x
$cto :: forall x. Rep HoleIdentToken x -> HoleIdentToken
to :: forall x. Rep HoleIdentToken x -> HoleIdentToken
C.Generic, String -> HoleIdentToken
(String -> HoleIdentToken) -> IsString HoleIdentToken
forall a. (String -> a) -> IsString a
$cfromString :: String -> HoleIdentToken
fromString :: String -> HoleIdentToken
Data.String.IsString)

-- | Start position (line, column) of something.

type BNFC'Position = C.Maybe (C.Int, C.Int)

pattern BNFC'NoPosition :: BNFC'Position
pattern $mBNFC'NoPosition :: forall {r}. BNFC'Position -> ((# #) -> r) -> ((# #) -> r) -> r
$bBNFC'NoPosition :: BNFC'Position
BNFC'NoPosition = C.Nothing

pattern BNFC'Position :: C.Int -> C.Int -> BNFC'Position
pattern $mBNFC'Position :: forall {r}. BNFC'Position -> (Int -> Int -> r) -> ((# #) -> r) -> r
$bBNFC'Position :: Int -> Int -> BNFC'Position
BNFC'Position line col = C.Just (line, col)

-- | Get the start position of something.

class HasPosition a where
  hasPosition :: a -> BNFC'Position

instance HasPosition Module where
  hasPosition :: Module -> BNFC'Position
hasPosition = \case
    Module BNFC'Position
p LanguageDecl' BNFC'Position
_ [Command' BNFC'Position]
_ -> BNFC'Position
p

instance HasPosition HoleIdent where
  hasPosition :: HoleIdent -> BNFC'Position
hasPosition = \case
    HoleIdent BNFC'Position
p HoleIdentToken
_ -> BNFC'Position
p

instance HasPosition VarIdent where
  hasPosition :: VarIdent -> BNFC'Position
hasPosition = \case
    VarIdent BNFC'Position
p VarIdentToken
_ -> BNFC'Position
p

instance HasPosition LanguageDecl where
  hasPosition :: LanguageDecl' BNFC'Position -> BNFC'Position
hasPosition = \case
    LanguageDecl BNFC'Position
p Language' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition Language where
  hasPosition :: Language' BNFC'Position -> BNFC'Position
hasPosition = \case
    Rzk1 BNFC'Position
p -> BNFC'Position
p

instance HasPosition Command where
  hasPosition :: Command' BNFC'Position -> BNFC'Position
hasPosition = \case
    CommandSetOption BNFC'Position
p String
_ String
_ -> BNFC'Position
p
    CommandUnsetOption BNFC'Position
p String
_ -> BNFC'Position
p
    CommandCheck BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    CommandCompute BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    CommandComputeWHNF BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    CommandComputeNF BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    CommandPostulate BNFC'Position
p VarIdent
_ DeclUsedVars' BNFC'Position
_ [Param' BNFC'Position]
_ Term' BNFC'Position
_ -> BNFC'Position
p
    CommandAssume BNFC'Position
p [VarIdent]
_ Term' BNFC'Position
_ -> BNFC'Position
p
    CommandSection BNFC'Position
p SectionName' BNFC'Position
_ -> BNFC'Position
p
    CommandSectionEnd BNFC'Position
p SectionName' BNFC'Position
_ -> BNFC'Position
p
    CommandDefine BNFC'Position
p VarIdent
_ DeclUsedVars' BNFC'Position
_ [Param' BNFC'Position]
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition DeclUsedVars where
  hasPosition :: DeclUsedVars' BNFC'Position -> BNFC'Position
hasPosition = \case
    DeclUsedVars BNFC'Position
p [VarIdent]
_ -> BNFC'Position
p

instance HasPosition SectionName where
  hasPosition :: SectionName' BNFC'Position -> BNFC'Position
hasPosition = \case
    NoSectionName BNFC'Position
p -> BNFC'Position
p
    SomeSectionName BNFC'Position
p VarIdent
_ -> BNFC'Position
p

instance HasPosition Pattern where
  hasPosition :: Pattern -> BNFC'Position
hasPosition = \case
    PatternUnit BNFC'Position
p -> BNFC'Position
p
    PatternVar BNFC'Position
p VarIdent
_ -> BNFC'Position
p
    PatternPair BNFC'Position
p Pattern
_ Pattern
_ -> BNFC'Position
p

instance HasPosition Param where
  hasPosition :: Param' BNFC'Position -> BNFC'Position
hasPosition = \case
    ParamPattern BNFC'Position
p Pattern
_ -> BNFC'Position
p
    ParamPatternType BNFC'Position
p [Pattern]
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ParamPatternShape BNFC'Position
p [Pattern]
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ParamPatternShapeDeprecated BNFC'Position
p Pattern
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition ParamDecl where
  hasPosition :: ParamDecl -> BNFC'Position
hasPosition = \case
    ParamType BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    ParamTermType BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ParamTermShape BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ParamTermTypeDeprecated BNFC'Position
p Pattern
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ParamVarShapeDeprecated BNFC'Position
p Pattern
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition Restriction where
  hasPosition :: Restriction -> BNFC'Position
hasPosition = \case
    Restriction BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_Restriction BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition Term where
  hasPosition :: Term' BNFC'Position -> BNFC'Position
hasPosition = \case
    Universe BNFC'Position
p -> BNFC'Position
p
    UniverseCube BNFC'Position
p -> BNFC'Position
p
    UniverseTope BNFC'Position
p -> BNFC'Position
p
    CubeUnit BNFC'Position
p -> BNFC'Position
p
    CubeUnitStar BNFC'Position
p -> BNFC'Position
p
    Cube2 BNFC'Position
p -> BNFC'Position
p
    Cube2_0 BNFC'Position
p -> BNFC'Position
p
    Cube2_1 BNFC'Position
p -> BNFC'Position
p
    CubeProduct BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TopeTop BNFC'Position
p -> BNFC'Position
p
    TopeBottom BNFC'Position
p -> BNFC'Position
p
    TopeEQ BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TopeLEQ BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TopeAnd BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TopeOr BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    RecBottom BNFC'Position
p -> BNFC'Position
p
    RecOr BNFC'Position
p [Restriction]
_ -> BNFC'Position
p
    RecOrDeprecated BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TypeFun BNFC'Position
p ParamDecl
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TypeSigma BNFC'Position
p Pattern
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TypeUnit BNFC'Position
p -> BNFC'Position
p
    TypeId BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TypeIdSimple BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    TypeRestricted BNFC'Position
p Term' BNFC'Position
_ [Restriction]
_ -> BNFC'Position
p
    TypeExtensionDeprecated BNFC'Position
p ParamDecl
_ Term' BNFC'Position
_ -> BNFC'Position
p
    App BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    Lambda BNFC'Position
p [Param' BNFC'Position]
_ Term' BNFC'Position
_ -> BNFC'Position
p
    Pair BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    First BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    Second BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    Unit BNFC'Position
p -> BNFC'Position
p
    Refl BNFC'Position
p -> BNFC'Position
p
    ReflTerm BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    ReflTermType BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    IdJ BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    Hole BNFC'Position
p HoleIdent
_ -> BNFC'Position
p
    Var BNFC'Position
p VarIdent
_ -> BNFC'Position
p
    TypeAsc BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_CubeUnitStar BNFC'Position
p -> BNFC'Position
p
    ASCII_Cube2_0 BNFC'Position
p -> BNFC'Position
p
    ASCII_Cube2_1 BNFC'Position
p -> BNFC'Position
p
    ASCII_TopeTop BNFC'Position
p -> BNFC'Position
p
    ASCII_TopeBottom BNFC'Position
p -> BNFC'Position
p
    ASCII_TopeEQ BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_TopeLEQ BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_TopeAnd BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_TopeOr BNFC'Position
p Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_TypeFun BNFC'Position
p ParamDecl
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_TypeSigma BNFC'Position
p Pattern
_ Term' BNFC'Position
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_Lambda BNFC'Position
p [Param' BNFC'Position]
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_TypeExtensionDeprecated BNFC'Position
p ParamDecl
_ Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_First BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p
    ASCII_Second BNFC'Position
p Term' BNFC'Position
_ -> BNFC'Position
p