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

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

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

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

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

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

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

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

type Term = Term' BNFC'Position
data Term' a
    = Var a VarIdent
    | Op a OpIdent [OpArg' a]
    | MetaVar a MetaVarIdent [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)

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

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

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

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

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

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

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

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

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

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

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

instance HasPosition Context where
  hasPosition :: Context' BNFC'Position -> BNFC'Position
hasPosition = \case
    Context BNFC'Position
p [MetaVarTyping' BNFC'Position]
_ [VarTyping' BNFC'Position]
_ -> BNFC'Position
p

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

instance HasPosition MetaVarTyping where
  hasPosition :: MetaVarTyping' BNFC'Position -> BNFC'Position
hasPosition = \case
    MetaVarTyping BNFC'Position
p MetaVarIdent
_ [Type' BNFC'Position]
_ Type' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition OpTyping where
  hasPosition :: OpTyping -> BNFC'Position
hasPosition = \case
    OpTyping BNFC'Position
p OpIdent
_ TypeBinders' BNFC'Position
_ [ScopedOpArgTyping' BNFC'Position]
_ ScopedType' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition Constraint where
  hasPosition :: Constraint -> BNFC'Position
hasPosition = \case
    ConstraintEq BNFC'Position
p Binders' BNFC'Position
_ ScopedTerm' BNFC'Position
_ ScopedTerm' BNFC'Position
_ -> BNFC'Position
p

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

instance HasPosition Subst where
  hasPosition :: Subst' BNFC'Position -> BNFC'Position
hasPosition = \case
    Subst BNFC'Position
p MetaVarIdent
_ Binders' BNFC'Position
_ ScopedTerm' BNFC'Position
_ -> BNFC'Position
p

instance HasPosition Term where
  hasPosition :: Term -> BNFC'Position
hasPosition = \case
    Var BNFC'Position
p VarIdent
_ -> BNFC'Position
p
    Op BNFC'Position
p OpIdent
_ [OpArg' BNFC'Position]
_ -> BNFC'Position
p
    MetaVar BNFC'Position
p MetaVarIdent
_ [Term]
_ -> BNFC'Position
p

instance HasPosition OpArg where
  hasPosition :: OpArg' BNFC'Position -> BNFC'Position
hasPosition = \case
    OpArg BNFC'Position
p Binders' BNFC'Position
_ ScopedTerm' BNFC'Position
_ -> BNFC'Position
p
    PlainOpArg BNFC'Position
p Term
_ -> BNFC'Position
p

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

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

instance HasPosition Type where
  hasPosition :: Type' BNFC'Position -> BNFC'Position
hasPosition = \case
    TypeFun BNFC'Position
p Type' BNFC'Position
_ Type' BNFC'Position
_ -> BNFC'Position
p
    TypeProduct BNFC'Position
p Type' BNFC'Position
_ Type' BNFC'Position
_ -> BNFC'Position
p
    TypeVar BNFC'Position
p VarIdent
_ -> BNFC'Position
p

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

instance HasPosition ScopedOpArgTyping where
  hasPosition :: ScopedOpArgTyping' BNFC'Position -> BNFC'Position
hasPosition = \case
    ScopedOpArgTyping BNFC'Position
p OpArgTyping' BNFC'Position
_ -> BNFC'Position
p

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

instance HasPosition ScopedType where
  hasPosition :: ScopedType' BNFC'Position -> BNFC'Position
hasPosition = \case
    ScopedType BNFC'Position
p Type' BNFC'Position
_ -> BNFC'Position
p