A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://hackage.haskell.org/package/ghc-internal-9.1201.0/docs/src/GHC.Internal.Generics.html below:

{-# OPTIONS_GHC -Wno-noncanonical-monoid-instances #-}

{-# LANGUAGE CPP                        #-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE DeriveFunctor              #-}
{-# LANGUAGE DeriveGeneric              #-}
{-# LANGUAGE EmptyDataDeriving          #-}
{-# LANGUAGE FlexibleContexts           #-}
{-# LANGUAGE FlexibleInstances          #-}
{-# LANGUAGE GADTs                      #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE InstanceSigs               #-}
{-# LANGUAGE MagicHash                  #-}
{-# LANGUAGE NoImplicitPrelude          #-}
{-# LANGUAGE PolyKinds                  #-}
{-# LANGUAGE ScopedTypeVariables        #-}
{-# LANGUAGE StandaloneDeriving         #-}
{-# LANGUAGE StandaloneKindSignatures   #-}
{-# LANGUAGE Trustworthy                #-}
{-# LANGUAGE TypeApplications           #-}
{-# LANGUAGE TypeFamilies               #-}
{-# LANGUAGE TypeOperators              #-}
{-# LANGUAGE UndecidableInstances       #-}

















module GHC.Internal.Generics  (































































































































































































































































































































































































































#if 0





#endif




































































































































































































































#if 0








#endif


  
    V1, U1(..), Par1(..), Rec1(..), K1(..), M1(..)
  , (:+:)(..), (:*:)(..), (:.:)(..)

  
  , URec(..)
  , type UAddr, type UChar, type UDouble
  , type UFloat, type UInt, type UWord

  
  , Rec0, R
  , D1, C1, S1, D, C, S

  
  , Datatype(..), Constructor(..), Selector(..)
  , Fixity(..), FixityI(..), Associativity(..), prec
  , SourceUnpackedness(..), SourceStrictness(..), DecidedStrictness(..)
  , Meta(..)

  
  , Generic(..)
  , Generic1(..)

  
  , Generically(..)
  , Generically1(..)
  ) where


import GHC.Internal.Data.Either     ( Either (..) )
import GHC.Internal.Data.Maybe      ( Maybe(..), fromMaybe )
import GHC.Internal.Data.Ord        ( Down(..) )
import GHC.Num.Integer ( Integer, integerToInt )
import GHC.Prim        ( Addr#, Char#, Double#, Float#, Int#, Word# )
import GHC.Internal.Ptr         ( Ptr(..) )
import GHC.Types


import GHC.Internal.Ix      ( Ix )
import GHC.Internal.Base    ( Alternative(..), Applicative(..), Functor(..)
                   , Monad(..), MonadPlus(..), NonEmpty(..), String, coerce
                   , Semigroup(..), Monoid(..), Void )
import GHC.Classes ( Eq(..), Ord(..) )
import GHC.Internal.Enum    ( Bounded, Enum )
import GHC.Internal.Read    ( Read(..) )
import GHC.Internal.Show    ( Show(..), showString, showChar, showParen, appPrec )
import GHC.Internal.Stack.Types ( SrcLoc(..) )
import GHC.Tuple   (Solo (..))
import GHC.Internal.Unicode ( GeneralCategory(..) )
import GHC.Internal.Fingerprint.Type ( Fingerprint(..) )


import GHC.Internal.Data.Proxy   ( Proxy(..) )
import GHC.Internal.TypeLits ( KnownSymbol, KnownNat, Nat, symbolVal, natVal )






data V1 (p :: k)
  deriving ( V1 p -> V1 p -> Bool
(V1 p -> V1 p -> Bool) -> (V1 p -> V1 p -> Bool) -> Eq (V1 p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). V1 p -> V1 p -> Bool
$c== :: forall k (p :: k). V1 p -> V1 p -> Bool
== :: V1 p -> V1 p -> Bool
$c/= :: forall k (p :: k). V1 p -> V1 p -> Bool
/= :: V1 p -> V1 p -> Bool
Eq       
           , Eq (V1 p) Eq (V1 p) => (V1 p -> V1 p -> Ordering) -> (V1 p -> V1 p -> Bool) -> (V1 p -> V1 p -> Bool) -> (V1 p -> V1 p -> Bool) -> (V1 p -> V1 p -> Bool) -> (V1 p -> V1 p -> V1 p) -> (V1 p -> V1 p -> V1 p) -> Ord (V1 p) V1 p -> V1 p -> Bool V1 p -> V1 p -> Ordering V1 p -> V1 p -> V1 p 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 k (p :: k). Eq (V1 p) forall k (p :: k). V1 p -> V1 p -> Bool forall k (p :: k). V1 p -> V1 p -> Ordering forall k (p :: k). V1 p -> V1 p -> V1 p $ccompare :: forall k (p :: k). V1 p -> V1 p -> Ordering compare :: V1 p -> V1 p -> Ordering $c< :: forall k (p :: k). V1 p -> V1 p -> Bool < :: V1 p -> V1 p -> Bool $c<= :: forall k (p :: k). V1 p -> V1 p -> Bool <= :: V1 p -> V1 p -> Bool $c> :: forall k (p :: k). V1 p -> V1 p -> Bool > :: V1 p -> V1 p -> Bool $c>= :: forall k (p :: k). V1 p -> V1 p -> Bool >= :: V1 p -> V1 p -> Bool $cmax :: forall k (p :: k). V1 p -> V1 p -> V1 p max :: V1 p -> V1 p -> V1 p $cmin :: forall k (p :: k). V1 p -> V1 p -> V1 p min :: V1 p -> V1 p -> V1 p Ord      
           , ReadPrec [V1 p] ReadPrec (V1 p) Int -> ReadS (V1 p) ReadS [V1 p] (Int -> ReadS (V1 p)) -> ReadS [V1 p] -> ReadPrec (V1 p) -> ReadPrec [V1 p] -> Read (V1 p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall k (p :: k). ReadPrec [V1 p] forall k (p :: k). ReadPrec (V1 p) forall k (p :: k). Int -> ReadS (V1 p) forall k (p :: k). ReadS [V1 p] $creadsPrec :: forall k (p :: k). Int -> ReadS (V1 p) readsPrec :: Int -> ReadS (V1 p) $creadList :: forall k (p :: k). ReadS [V1 p] readList :: ReadS [V1 p] $creadPrec :: forall k (p :: k). ReadPrec (V1 p) readPrec :: ReadPrec (V1 p) $creadListPrec :: forall k (p :: k). ReadPrec [V1 p] readListPrec :: ReadPrec [V1 p] Read     
           , Int -> V1 p -> ShowS
[V1 p] -> ShowS
V1 p -> String
(Int -> V1 p -> ShowS)
-> (V1 p -> String) -> ([V1 p] -> ShowS) -> Show (V1 p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (p :: k). Int -> V1 p -> ShowS
forall k (p :: k). [V1 p] -> ShowS
forall k (p :: k). V1 p -> String
$cshowsPrec :: forall k (p :: k). Int -> V1 p -> ShowS
showsPrec :: Int -> V1 p -> ShowS
$cshow :: forall k (p :: k). V1 p -> String
show :: V1 p -> String
$cshowList :: forall k (p :: k). [V1 p] -> ShowS
showList :: [V1 p] -> ShowS
Show     
           , (forall a b. (a -> b) -> V1 a -> V1 b)
-> (forall a b. a -> V1 b -> V1 a) -> Functor V1
forall a b. a -> V1 b -> V1 a
forall a b. (a -> b) -> V1 a -> V1 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) -> V1 a -> V1 b
fmap :: forall a b. (a -> b) -> V1 a -> V1 b
$c<$ :: forall a b. a -> V1 b -> V1 a
<$ :: forall a b. a -> V1 b -> V1 a
Functor  
           , (forall x. V1 p -> Rep (V1 p) x)
-> (forall x. Rep (V1 p) x -> V1 p) -> Generic (V1 p)
forall x. V1 p -> Rep (V1 p) x
forall x. Rep (V1 p) x -> V1 p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. V1 p -> Rep (V1 p) x
forall k (p :: k) x. Rep (V1 p) x -> V1 p
$cfrom :: forall k (p :: k) x. V1 p -> Rep (V1 p) x
from :: forall x. V1 p -> Rep (V1 p) x
$cto :: forall k (p :: k) x. Rep (V1 p) x -> V1 p
to :: forall x. Rep (V1 p) x -> V1 p
Generic  
           , (forall (a :: k). V1 a -> Rep1 V1 a)
-> (forall (a :: k). Rep1 V1 a -> V1 a) -> Generic1 V1
forall (a :: k). V1 a -> Rep1 V1 a
forall (a :: k). Rep1 V1 a -> V1 a
forall k (a :: k). V1 a -> Rep1 V1 a
forall k (a :: k). Rep1 V1 a -> V1 a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). V1 a -> Rep1 V1 a
from1 :: forall (a :: k). V1 a -> Rep1 V1 a
$cto1 :: forall k (a :: k). Rep1 V1 a -> V1 a
to1 :: forall (a :: k). Rep1 V1 a -> V1 a
Generic1 
           )


instance Semigroup (V1 p) where
  V1 p
v <> :: V1 p -> V1 p -> V1 p
<> V1 p
_ = V1 p
v


data U1 (p :: k) = U1
  deriving ( (forall x. U1 p -> Rep (U1 p) x)
-> (forall x. Rep (U1 p) x -> U1 p) -> Generic (U1 p)
forall x. U1 p -> Rep (U1 p) x
forall x. Rep (U1 p) x -> U1 p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. U1 p -> Rep (U1 p) x
forall k (p :: k) x. Rep (U1 p) x -> U1 p
$cfrom :: forall k (p :: k) x. U1 p -> Rep (U1 p) x
from :: forall x. U1 p -> Rep (U1 p) x
$cto :: forall k (p :: k) x. Rep (U1 p) x -> U1 p
to :: forall x. Rep (U1 p) x -> U1 p
Generic  
           , (forall (a :: k). U1 a -> Rep1 U1 a)
-> (forall (a :: k). Rep1 U1 a -> U1 a) -> Generic1 U1
forall (a :: k). U1 a -> Rep1 U1 a
forall (a :: k). Rep1 U1 a -> U1 a
forall k (a :: k). U1 a -> Rep1 U1 a
forall k (a :: k). Rep1 U1 a -> U1 a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). U1 a -> Rep1 U1 a
from1 :: forall (a :: k). U1 a -> Rep1 U1 a
$cto1 :: forall k (a :: k). Rep1 U1 a -> U1 a
to1 :: forall (a :: k). Rep1 U1 a -> U1 a
Generic1 
           )


instance Eq (U1 p) where
  U1 p
_ == :: U1 p -> U1 p -> Bool
== U1 p
_ = Bool
True


instance Ord (U1 p) where
  compare :: U1 p -> U1 p -> Ordering
compare U1 p
_ U1 p
_ = Ordering
EQ


deriving instance Read (U1 p)


instance Show (U1 p) where
  showsPrec :: Int -> U1 p -> ShowS
showsPrec Int
_ U1 p
_ = String -> ShowS
showString String
"U1"


instance Functor U1 where
  fmap :: forall a b. (a -> b) -> U1 a -> U1 b
fmap a -> b
_ U1 a
_ = U1 b
forall k (p :: k). U1 p
U1


instance Applicative U1 where
  pure :: forall a. a -> U1 a
pure a
_ = U1 a
forall k (p :: k). U1 p
U1
  U1 (a -> b)
_ <*> :: forall a b. U1 (a -> b) -> U1 a -> U1 b
<*> U1 a
_ = U1 b
forall k (p :: k). U1 p
U1
  liftA2 :: forall a b c. (a -> b -> c) -> U1 a -> U1 b -> U1 c
liftA2 a -> b -> c
_ U1 a
_ U1 b
_ = U1 c
forall k (p :: k). U1 p
U1


instance Alternative U1 where
  empty :: forall a. U1 a
empty = U1 a
forall k (p :: k). U1 p
U1
  U1 a
_ <|> :: forall a. U1 a -> U1 a -> U1 a
<|> U1 a
_ = U1 a
forall k (p :: k). U1 p
U1


instance Monad U1 where
  U1 a
_ >>= :: forall a b. U1 a -> (a -> U1 b) -> U1 b
>>= a -> U1 b
_ = U1 b
forall k (p :: k). U1 p
U1


instance MonadPlus U1


instance Semigroup (U1 p) where
  U1 p
_ <> :: U1 p -> U1 p -> U1 p
<> U1 p
_ = U1 p
forall k (p :: k). U1 p
U1


instance Monoid (U1 p) where
  mempty :: U1 p
mempty = U1 p
forall k (p :: k). U1 p
U1


newtype Par1 p = Par1 { forall p. Par1 p -> p
unPar1 :: p }
  deriving ( Par1 p -> Par1 p -> Bool
(Par1 p -> Par1 p -> Bool)
-> (Par1 p -> Par1 p -> Bool) -> Eq (Par1 p)
forall p. Eq p => Par1 p -> Par1 p -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall p. Eq p => Par1 p -> Par1 p -> Bool
== :: Par1 p -> Par1 p -> Bool
$c/= :: forall p. Eq p => Par1 p -> Par1 p -> Bool
/= :: Par1 p -> Par1 p -> Bool
Eq       
           , Eq (Par1 p) Eq (Par1 p) => (Par1 p -> Par1 p -> Ordering) -> (Par1 p -> Par1 p -> Bool) -> (Par1 p -> Par1 p -> Bool) -> (Par1 p -> Par1 p -> Bool) -> (Par1 p -> Par1 p -> Bool) -> (Par1 p -> Par1 p -> Par1 p) -> (Par1 p -> Par1 p -> Par1 p) -> Ord (Par1 p) Par1 p -> Par1 p -> Bool Par1 p -> Par1 p -> Ordering Par1 p -> Par1 p -> Par1 p 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 p. Ord p => Eq (Par1 p) forall p. Ord p => Par1 p -> Par1 p -> Bool forall p. Ord p => Par1 p -> Par1 p -> Ordering forall p. Ord p => Par1 p -> Par1 p -> Par1 p $ccompare :: forall p. Ord p => Par1 p -> Par1 p -> Ordering compare :: Par1 p -> Par1 p -> Ordering $c< :: forall p. Ord p => Par1 p -> Par1 p -> Bool < :: Par1 p -> Par1 p -> Bool $c<= :: forall p. Ord p => Par1 p -> Par1 p -> Bool <= :: Par1 p -> Par1 p -> Bool $c> :: forall p. Ord p => Par1 p -> Par1 p -> Bool > :: Par1 p -> Par1 p -> Bool $c>= :: forall p. Ord p => Par1 p -> Par1 p -> Bool >= :: Par1 p -> Par1 p -> Bool $cmax :: forall p. Ord p => Par1 p -> Par1 p -> Par1 p max :: Par1 p -> Par1 p -> Par1 p $cmin :: forall p. Ord p => Par1 p -> Par1 p -> Par1 p min :: Par1 p -> Par1 p -> Par1 p Ord      
           , ReadPrec [Par1 p] ReadPrec (Par1 p) Int -> ReadS (Par1 p) ReadS [Par1 p] (Int -> ReadS (Par1 p)) -> ReadS [Par1 p] -> ReadPrec (Par1 p) -> ReadPrec [Par1 p] -> Read (Par1 p) forall p. Read p => ReadPrec [Par1 p] forall p. Read p => ReadPrec (Par1 p) forall p. Read p => Int -> ReadS (Par1 p) forall p. Read p => ReadS [Par1 p] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall p. Read p => Int -> ReadS (Par1 p) readsPrec :: Int -> ReadS (Par1 p) $creadList :: forall p. Read p => ReadS [Par1 p] readList :: ReadS [Par1 p] $creadPrec :: forall p. Read p => ReadPrec (Par1 p) readPrec :: ReadPrec (Par1 p) $creadListPrec :: forall p. Read p => ReadPrec [Par1 p] readListPrec :: ReadPrec [Par1 p] Read     
           , Int -> Par1 p -> ShowS
[Par1 p] -> ShowS
Par1 p -> String
(Int -> Par1 p -> ShowS)
-> (Par1 p -> String) -> ([Par1 p] -> ShowS) -> Show (Par1 p)
forall p. Show p => Int -> Par1 p -> ShowS
forall p. Show p => [Par1 p] -> ShowS
forall p. Show p => Par1 p -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall p. Show p => Int -> Par1 p -> ShowS
showsPrec :: Int -> Par1 p -> ShowS
$cshow :: forall p. Show p => Par1 p -> String
show :: Par1 p -> String
$cshowList :: forall p. Show p => [Par1 p] -> ShowS
showList :: [Par1 p] -> ShowS
Show     
           , (forall a b. (a -> b) -> Par1 a -> Par1 b)
-> (forall a b. a -> Par1 b -> Par1 a) -> Functor Par1
forall a b. a -> Par1 b -> Par1 a
forall a b. (a -> b) -> Par1 a -> Par1 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) -> Par1 a -> Par1 b
fmap :: forall a b. (a -> b) -> Par1 a -> Par1 b
$c<$ :: forall a b. a -> Par1 b -> Par1 a
<$ :: forall a b. a -> Par1 b -> Par1 a
Functor  
           , (forall x. Par1 p -> Rep (Par1 p) x)
-> (forall x. Rep (Par1 p) x -> Par1 p) -> Generic (Par1 p)
forall x. Par1 p -> Rep (Par1 p) x
forall x. Rep (Par1 p) x -> Par1 p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall p x. Par1 p -> Rep (Par1 p) x
forall p x. Rep (Par1 p) x -> Par1 p
$cfrom :: forall p x. Par1 p -> Rep (Par1 p) x
from :: forall x. Par1 p -> Rep (Par1 p) x
$cto :: forall p x. Rep (Par1 p) x -> Par1 p
to :: forall x. Rep (Par1 p) x -> Par1 p
Generic  
           , (forall a. Par1 a -> Rep1 Par1 a)
-> (forall a. Rep1 Par1 a -> Par1 a) -> Generic1 Par1
forall a. Par1 a -> Rep1 Par1 a
forall a. Rep1 Par1 a -> Par1 a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall a. Par1 a -> Rep1 Par1 a
from1 :: forall a. Par1 a -> Rep1 Par1 a
$cto1 :: forall a. Rep1 Par1 a -> Par1 a
to1 :: forall a. Rep1 Par1 a -> Par1 a
Generic1 
           )


instance Applicative Par1 where
  pure :: forall a. a -> Par1 a
pure = a -> Par1 a
forall a. a -> Par1 a
Par1
  <*> :: forall a b. Par1 (a -> b) -> Par1 a -> Par1 b
(<*>) = Par1 (a -> b) -> Par1 a -> Par1 b
forall a b. Coercible a b => a -> b
coerce
  liftA2 :: forall a b c. (a -> b -> c) -> Par1 a -> Par1 b -> Par1 c
liftA2 = (a -> b -> c) -> Par1 a -> Par1 b -> Par1 c
forall a b. Coercible a b => a -> b
coerce


instance Monad Par1 where
  Par1 a
x >>= :: forall a b. Par1 a -> (a -> Par1 b) -> Par1 b
>>= a -> Par1 b
f = a -> Par1 b
f a
x


deriving instance Semigroup p => Semigroup (Par1 p)


deriving instance Monoid p => Monoid (Par1 p)



newtype Rec1 (f :: k -> Type) (p :: k) = Rec1 { forall k (f :: k -> *) (p :: k). Rec1 f p -> f p
unRec1 :: f p }
  deriving ( Rec1 f p -> Rec1 f p -> Bool
(Rec1 f p -> Rec1 f p -> Bool)
-> (Rec1 f p -> Rec1 f p -> Bool) -> Eq (Rec1 f p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (f :: k -> *) (p :: k).
Eq (f p) =>
Rec1 f p -> Rec1 f p -> Bool
$c== :: forall k (f :: k -> *) (p :: k).
Eq (f p) =>
Rec1 f p -> Rec1 f p -> Bool
== :: Rec1 f p -> Rec1 f p -> Bool
$c/= :: forall k (f :: k -> *) (p :: k).
Eq (f p) =>
Rec1 f p -> Rec1 f p -> Bool
/= :: Rec1 f p -> Rec1 f p -> Bool
Eq       
           , Eq (Rec1 f p) Eq (Rec1 f p) => (Rec1 f p -> Rec1 f p -> Ordering) -> (Rec1 f p -> Rec1 f p -> Bool) -> (Rec1 f p -> Rec1 f p -> Bool) -> (Rec1 f p -> Rec1 f p -> Bool) -> (Rec1 f p -> Rec1 f p -> Bool) -> (Rec1 f p -> Rec1 f p -> Rec1 f p) -> (Rec1 f p -> Rec1 f p -> Rec1 f p) -> Ord (Rec1 f p) Rec1 f p -> Rec1 f p -> Bool Rec1 f p -> Rec1 f p -> Ordering Rec1 f p -> Rec1 f p -> Rec1 f p 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 k (f :: k -> *) (p :: k). Ord (f p) => Eq (Rec1 f p) forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Bool forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Ordering forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Rec1 f p $ccompare :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Ordering compare :: Rec1 f p -> Rec1 f p -> Ordering $c< :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Bool < :: Rec1 f p -> Rec1 f p -> Bool $c<= :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Bool <= :: Rec1 f p -> Rec1 f p -> Bool $c> :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Bool > :: Rec1 f p -> Rec1 f p -> Bool $c>= :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Bool >= :: Rec1 f p -> Rec1 f p -> Bool $cmax :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Rec1 f p max :: Rec1 f p -> Rec1 f p -> Rec1 f p $cmin :: forall k (f :: k -> *) (p :: k). Ord (f p) => Rec1 f p -> Rec1 f p -> Rec1 f p min :: Rec1 f p -> Rec1 f p -> Rec1 f p Ord      
           , ReadPrec [Rec1 f p] ReadPrec (Rec1 f p) Int -> ReadS (Rec1 f p) ReadS [Rec1 f p] (Int -> ReadS (Rec1 f p)) -> ReadS [Rec1 f p] -> ReadPrec (Rec1 f p) -> ReadPrec [Rec1 f p] -> Read (Rec1 f p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec [Rec1 f p] forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec (Rec1 f p) forall k (f :: k -> *) (p :: k). Read (f p) => Int -> ReadS (Rec1 f p) forall k (f :: k -> *) (p :: k). Read (f p) => ReadS [Rec1 f p] $creadsPrec :: forall k (f :: k -> *) (p :: k). Read (f p) => Int -> ReadS (Rec1 f p) readsPrec :: Int -> ReadS (Rec1 f p) $creadList :: forall k (f :: k -> *) (p :: k). Read (f p) => ReadS [Rec1 f p] readList :: ReadS [Rec1 f p] $creadPrec :: forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec (Rec1 f p) readPrec :: ReadPrec (Rec1 f p) $creadListPrec :: forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec [Rec1 f p] readListPrec :: ReadPrec [Rec1 f p] Read     
           , Int -> Rec1 f p -> ShowS
[Rec1 f p] -> ShowS
Rec1 f p -> String
(Int -> Rec1 f p -> ShowS)
-> (Rec1 f p -> String) -> ([Rec1 f p] -> ShowS) -> Show (Rec1 f p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (f :: k -> *) (p :: k).
Show (f p) =>
Int -> Rec1 f p -> ShowS
forall k (f :: k -> *) (p :: k). Show (f p) => [Rec1 f p] -> ShowS
forall k (f :: k -> *) (p :: k). Show (f p) => Rec1 f p -> String
$cshowsPrec :: forall k (f :: k -> *) (p :: k).
Show (f p) =>
Int -> Rec1 f p -> ShowS
showsPrec :: Int -> Rec1 f p -> ShowS
$cshow :: forall k (f :: k -> *) (p :: k). Show (f p) => Rec1 f p -> String
show :: Rec1 f p -> String
$cshowList :: forall k (f :: k -> *) (p :: k). Show (f p) => [Rec1 f p] -> ShowS
showList :: [Rec1 f p] -> ShowS
Show     
           , (forall a b. (a -> b) -> Rec1 f a -> Rec1 f b)
-> (forall a b. a -> Rec1 f b -> Rec1 f a) -> Functor (Rec1 f)
forall a b. a -> Rec1 f b -> Rec1 f a
forall a b. (a -> b) -> Rec1 f a -> Rec1 f b
forall (f :: * -> *) a b. Functor f => a -> Rec1 f b -> Rec1 f a
forall (f :: * -> *) a b.
Functor f =>
(a -> b) -> Rec1 f a -> Rec1 f b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall (f :: * -> *) a b.
Functor f =>
(a -> b) -> Rec1 f a -> Rec1 f b
fmap :: forall a b. (a -> b) -> Rec1 f a -> Rec1 f b
$c<$ :: forall (f :: * -> *) a b. Functor f => a -> Rec1 f b -> Rec1 f a
<$ :: forall a b. a -> Rec1 f b -> Rec1 f a
Functor  
           , (forall x. Rec1 f p -> Rep (Rec1 f p) x)
-> (forall x. Rep (Rec1 f p) x -> Rec1 f p) -> Generic (Rec1 f p)
forall x. Rec1 f p -> Rep (Rec1 f p) x
forall x. Rep (Rec1 f p) x -> Rec1 f p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (f :: k -> *) (p :: k) x. Rec1 f p -> Rep (Rec1 f p) x
forall k (f :: k -> *) (p :: k) x. Rep (Rec1 f p) x -> Rec1 f p
$cfrom :: forall k (f :: k -> *) (p :: k) x. Rec1 f p -> Rep (Rec1 f p) x
from :: forall x. Rec1 f p -> Rep (Rec1 f p) x
$cto :: forall k (f :: k -> *) (p :: k) x. Rep (Rec1 f p) x -> Rec1 f p
to :: forall x. Rep (Rec1 f p) x -> Rec1 f p
Generic  
           , (forall (a :: k). Rec1 f a -> Rep1 (Rec1 f) a)
-> (forall (a :: k). Rep1 (Rec1 f) a -> Rec1 f a)
-> Generic1 (Rec1 f)
forall (a :: k). Rec1 f a -> Rep1 (Rec1 f) a
forall (a :: k). Rep1 (Rec1 f) a -> Rec1 f a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
forall k (f :: k -> *) (a :: k). Rec1 f a -> Rep1 (Rec1 f) a
forall k (f :: k -> *) (a :: k). Rep1 (Rec1 f) a -> Rec1 f a
$cfrom1 :: forall k (f :: k -> *) (a :: k). Rec1 f a -> Rep1 (Rec1 f) a
from1 :: forall (a :: k). Rec1 f a -> Rep1 (Rec1 f) a
$cto1 :: forall k (f :: k -> *) (a :: k). Rep1 (Rec1 f) a -> Rec1 f a
to1 :: forall (a :: k). Rep1 (Rec1 f) a -> Rec1 f a
Generic1 
           )


deriving instance Applicative f => Applicative (Rec1 f)


deriving instance Alternative f => Alternative (Rec1 f)


instance Monad f => Monad (Rec1 f) where
  Rec1 f a
x >>= :: forall a b. Rec1 f a -> (a -> Rec1 f b) -> Rec1 f b
>>= a -> Rec1 f b
f = f b -> Rec1 f b
forall k (f :: k -> *) (p :: k). f p -> Rec1 f p
Rec1 (f a
x f a -> (a -> f b) -> f b
forall a b. f a -> (a -> f b) -> f b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \a
a -> Rec1 f b -> f b
forall k (f :: k -> *) (p :: k). Rec1 f p -> f p
unRec1 (a -> Rec1 f b
f a
a))


deriving instance MonadPlus f => MonadPlus (Rec1 f)


deriving instance Semigroup (f p) => Semigroup (Rec1 f p)


deriving instance Monoid (f p) => Monoid (Rec1 f p)


newtype K1 (i :: Type) c (p :: k) = K1 { forall k i c (p :: k). K1 i c p -> c
unK1 :: c }
  deriving ( K1 i c p -> K1 i c p -> Bool
(K1 i c p -> K1 i c p -> Bool)
-> (K1 i c p -> K1 i c p -> Bool) -> Eq (K1 i c p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall i c k (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool
$c== :: forall i c k (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool
== :: K1 i c p -> K1 i c p -> Bool
$c/= :: forall i c k (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool
/= :: K1 i c p -> K1 i c p -> Bool
Eq       
           , Eq (K1 i c p) Eq (K1 i c p) => (K1 i c p -> K1 i c p -> Ordering) -> (K1 i c p -> K1 i c p -> Bool) -> (K1 i c p -> K1 i c p -> Bool) -> (K1 i c p -> K1 i c p -> Bool) -> (K1 i c p -> K1 i c p -> Bool) -> (K1 i c p -> K1 i c p -> K1 i c p) -> (K1 i c p -> K1 i c p -> K1 i c p) -> Ord (K1 i c p) K1 i c p -> K1 i c p -> Bool K1 i c p -> K1 i c p -> Ordering K1 i c p -> K1 i c p -> K1 i c p 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 i c k (p :: k). Ord c => Eq (K1 i c p) forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Ordering forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c p $ccompare :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Ordering compare :: K1 i c p -> K1 i c p -> Ordering $c< :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool < :: K1 i c p -> K1 i c p -> Bool $c<= :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool <= :: K1 i c p -> K1 i c p -> Bool $c> :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool > :: K1 i c p -> K1 i c p -> Bool $c>= :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool >= :: K1 i c p -> K1 i c p -> Bool $cmax :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c p max :: K1 i c p -> K1 i c p -> K1 i c p $cmin :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c p min :: K1 i c p -> K1 i c p -> K1 i c p Ord      
           , ReadPrec [K1 i c p] ReadPrec (K1 i c p) Int -> ReadS (K1 i c p) ReadS [K1 i c p] (Int -> ReadS (K1 i c p)) -> ReadS [K1 i c p] -> ReadPrec (K1 i c p) -> ReadPrec [K1 i c p] -> Read (K1 i c p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall i c k (p :: k). Read c => ReadPrec [K1 i c p] forall i c k (p :: k). Read c => ReadPrec (K1 i c p) forall i c k (p :: k). Read c => Int -> ReadS (K1 i c p) forall i c k (p :: k). Read c => ReadS [K1 i c p] $creadsPrec :: forall i c k (p :: k). Read c => Int -> ReadS (K1 i c p) readsPrec :: Int -> ReadS (K1 i c p) $creadList :: forall i c k (p :: k). Read c => ReadS [K1 i c p] readList :: ReadS [K1 i c p] $creadPrec :: forall i c k (p :: k). Read c => ReadPrec (K1 i c p) readPrec :: ReadPrec (K1 i c p) $creadListPrec :: forall i c k (p :: k). Read c => ReadPrec [K1 i c p] readListPrec :: ReadPrec [K1 i c p] Read     
           , Int -> K1 i c p -> ShowS
[K1 i c p] -> ShowS
K1 i c p -> String
(Int -> K1 i c p -> ShowS)
-> (K1 i c p -> String) -> ([K1 i c p] -> ShowS) -> Show (K1 i c p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall i c k (p :: k). Show c => Int -> K1 i c p -> ShowS
forall i c k (p :: k). Show c => [K1 i c p] -> ShowS
forall i c k (p :: k). Show c => K1 i c p -> String
$cshowsPrec :: forall i c k (p :: k). Show c => Int -> K1 i c p -> ShowS
showsPrec :: Int -> K1 i c p -> ShowS
$cshow :: forall i c k (p :: k). Show c => K1 i c p -> String
show :: K1 i c p -> String
$cshowList :: forall i c k (p :: k). Show c => [K1 i c p] -> ShowS
showList :: [K1 i c p] -> ShowS
Show     
           , (forall a b. (a -> b) -> K1 i c a -> K1 i c b)
-> (forall a b. a -> K1 i c b -> K1 i c a) -> Functor (K1 i c)
forall a b. a -> K1 i c b -> K1 i c a
forall a b. (a -> b) -> K1 i c a -> K1 i c b
forall i c a b. a -> K1 i c b -> K1 i c a
forall i c a b. (a -> b) -> K1 i c a -> K1 i c b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall i c a b. (a -> b) -> K1 i c a -> K1 i c b
fmap :: forall a b. (a -> b) -> K1 i c a -> K1 i c b
$c<$ :: forall i c a b. a -> K1 i c b -> K1 i c a
<$ :: forall a b. a -> K1 i c b -> K1 i c a
Functor  
           , (forall x. K1 i c p -> Rep (K1 i c p) x)
-> (forall x. Rep (K1 i c p) x -> K1 i c p) -> Generic (K1 i c p)
forall x. K1 i c p -> Rep (K1 i c p) x
forall x. Rep (K1 i c p) x -> K1 i c p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall i c k (p :: k) x. K1 i c p -> Rep (K1 i c p) x
forall i c k (p :: k) x. Rep (K1 i c p) x -> K1 i c p
$cfrom :: forall i c k (p :: k) x. K1 i c p -> Rep (K1 i c p) x
from :: forall x. K1 i c p -> Rep (K1 i c p) x
$cto :: forall i c k (p :: k) x. Rep (K1 i c p) x -> K1 i c p
to :: forall x. Rep (K1 i c p) x -> K1 i c p
Generic  
           , (forall (a :: k). K1 i c a -> Rep1 (K1 i c) a)
-> (forall (a :: k). Rep1 (K1 i c) a -> K1 i c a)
-> Generic1 (K1 i c)
forall (a :: k). K1 i c a -> Rep1 (K1 i c) a
forall (a :: k). Rep1 (K1 i c) a -> K1 i c a
forall k i c (a :: k). K1 i c a -> Rep1 (K1 i c) a
forall k i c (a :: k). Rep1 (K1 i c) a -> K1 i c a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k i c (a :: k). K1 i c a -> Rep1 (K1 i c) a
from1 :: forall (a :: k). K1 i c a -> Rep1 (K1 i c) a
$cto1 :: forall k i c (a :: k). Rep1 (K1 i c) a -> K1 i c a
to1 :: forall (a :: k). Rep1 (K1 i c) a -> K1 i c a
Generic1 
           )


instance Monoid c => Applicative (K1 i c) where
  pure :: forall a. a -> K1 i c a
pure a
_ = c -> K1 i c a
forall k i c (p :: k). c -> K1 i c p
K1 c
forall a. Monoid a => a
mempty
  liftA2 :: forall a b c. (a -> b -> c) -> K1 i c a -> K1 i c b -> K1 i c c
liftA2 = \a -> b -> c
_ -> (c -> c -> c) -> K1 i c a -> K1 i c b -> K1 i c c
forall a b. Coercible a b => a -> b
coerce (c -> c -> c
forall a. Monoid a => a -> a -> a
mappend :: c -> c -> c)
  <*> :: forall a b. K1 i c (a -> b) -> K1 i c a -> K1 i c b
(<*>) = (c -> c -> c) -> K1 i c (a -> b) -> K1 i c a -> K1 i c b
forall a b. Coercible a b => a -> b
coerce (c -> c -> c
forall a. Monoid a => a -> a -> a
mappend :: c -> c -> c)


deriving instance Semigroup c => Semigroup (K1 i c p)


deriving instance Monoid c => Monoid (K1 i c p)


deriving instance Applicative f => Applicative (M1 i c f)


deriving instance Alternative f => Alternative (M1 i c f)


deriving instance Monad f => Monad (M1 i c f)


deriving instance MonadPlus f => MonadPlus (M1 i c f)


deriving instance Semigroup (f p) => Semigroup (M1 i c f p)


deriving instance Monoid (f p) => Monoid (M1 i c f p)


newtype M1 (i :: Type) (c :: Meta) (f :: k -> Type) (p :: k) =
    M1 { forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1 :: f p }
  deriving ( M1 i c f p -> M1 i c f p -> Bool
(M1 i c f p -> M1 i c f p -> Bool)
-> (M1 i c f p -> M1 i c f p -> Bool) -> Eq (M1 i c f p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall i (c :: Meta) k (f :: k -> *) (p :: k).
Eq (f p) =>
M1 i c f p -> M1 i c f p -> Bool
$c== :: forall i (c :: Meta) k (f :: k -> *) (p :: k).
Eq (f p) =>
M1 i c f p -> M1 i c f p -> Bool
== :: M1 i c f p -> M1 i c f p -> Bool
$c/= :: forall i (c :: Meta) k (f :: k -> *) (p :: k).
Eq (f p) =>
M1 i c f p -> M1 i c f p -> Bool
/= :: M1 i c f p -> M1 i c f p -> Bool
Eq       
           , Eq (M1 i c f p) Eq (M1 i c f p) => (M1 i c f p -> M1 i c f p -> Ordering) -> (M1 i c f p -> M1 i c f p -> Bool) -> (M1 i c f p -> M1 i c f p -> Bool) -> (M1 i c f p -> M1 i c f p -> Bool) -> (M1 i c f p -> M1 i c f p -> Bool) -> (M1 i c f p -> M1 i c f p -> M1 i c f p) -> (M1 i c f p -> M1 i c f p -> M1 i c f p) -> Ord (M1 i c f p) M1 i c f p -> M1 i c f p -> Bool M1 i c f p -> M1 i c f p -> Ordering M1 i c f p -> M1 i c f p -> M1 i c f p 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 i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => Eq (M1 i c f p) forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Bool forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Ordering forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> M1 i c f p $ccompare :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Ordering compare :: M1 i c f p -> M1 i c f p -> Ordering $c< :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Bool < :: M1 i c f p -> M1 i c f p -> Bool $c<= :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Bool <= :: M1 i c f p -> M1 i c f p -> Bool $c> :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Bool > :: M1 i c f p -> M1 i c f p -> Bool $c>= :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> Bool >= :: M1 i c f p -> M1 i c f p -> Bool $cmax :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> M1 i c f p max :: M1 i c f p -> M1 i c f p -> M1 i c f p $cmin :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Ord (f p) => M1 i c f p -> M1 i c f p -> M1 i c f p min :: M1 i c f p -> M1 i c f p -> M1 i c f p Ord      
           , ReadPrec [M1 i c f p] ReadPrec (M1 i c f p) Int -> ReadS (M1 i c f p) ReadS [M1 i c f p] (Int -> ReadS (M1 i c f p)) -> ReadS [M1 i c f p] -> ReadPrec (M1 i c f p) -> ReadPrec [M1 i c f p] -> Read (M1 i c f p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => ReadPrec [M1 i c f p] forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => ReadPrec (M1 i c f p) forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => Int -> ReadS (M1 i c f p) forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => ReadS [M1 i c f p] $creadsPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => Int -> ReadS (M1 i c f p) readsPrec :: Int -> ReadS (M1 i c f p) $creadList :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => ReadS [M1 i c f p] readList :: ReadS [M1 i c f p] $creadPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => ReadPrec (M1 i c f p) readPrec :: ReadPrec (M1 i c f p) $creadListPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k). Read (f p) => ReadPrec [M1 i c f p] readListPrec :: ReadPrec [M1 i c f p] Read     
           , Int -> M1 i c f p -> ShowS
[M1 i c f p] -> ShowS
M1 i c f p -> String
(Int -> M1 i c f p -> ShowS)
-> (M1 i c f p -> String)
-> ([M1 i c f p] -> ShowS)
-> Show (M1 i c f p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall i (c :: Meta) k (f :: k -> *) (p :: k).
Show (f p) =>
Int -> M1 i c f p -> ShowS
forall i (c :: Meta) k (f :: k -> *) (p :: k).
Show (f p) =>
[M1 i c f p] -> ShowS
forall i (c :: Meta) k (f :: k -> *) (p :: k).
Show (f p) =>
M1 i c f p -> String
$cshowsPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k).
Show (f p) =>
Int -> M1 i c f p -> ShowS
showsPrec :: Int -> M1 i c f p -> ShowS
$cshow :: forall i (c :: Meta) k (f :: k -> *) (p :: k).
Show (f p) =>
M1 i c f p -> String
show :: M1 i c f p -> String
$cshowList :: forall i (c :: Meta) k (f :: k -> *) (p :: k).
Show (f p) =>
[M1 i c f p] -> ShowS
showList :: [M1 i c f p] -> ShowS
Show     
           , (forall a b. (a -> b) -> M1 i c f a -> M1 i c f b)
-> (forall a b. a -> M1 i c f b -> M1 i c f a)
-> Functor (M1 i c f)
forall a b. a -> M1 i c f b -> M1 i c f a
forall a b. (a -> b) -> M1 i c f a -> M1 i c f b
forall i (c :: Meta) (f :: * -> *) a b.
Functor f =>
a -> M1 i c f b -> M1 i c f a
forall i (c :: Meta) (f :: * -> *) a b.
Functor f =>
(a -> b) -> M1 i c f a -> M1 i c f b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall i (c :: Meta) (f :: * -> *) a b.
Functor f =>
(a -> b) -> M1 i c f a -> M1 i c f b
fmap :: forall a b. (a -> b) -> M1 i c f a -> M1 i c f b
$c<$ :: forall i (c :: Meta) (f :: * -> *) a b.
Functor f =>
a -> M1 i c f b -> M1 i c f a
<$ :: forall a b. a -> M1 i c f b -> M1 i c f a
Functor  
           , (forall x. M1 i c f p -> Rep (M1 i c f p) x)
-> (forall x. Rep (M1 i c f p) x -> M1 i c f p)
-> Generic (M1 i c f p)
forall x. M1 i c f p -> Rep (M1 i c f p) x
forall x. Rep (M1 i c f p) x -> M1 i c f p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall i (c :: Meta) k (f :: k -> *) (p :: k) x.
M1 i c f p -> Rep (M1 i c f p) x
forall i (c :: Meta) k (f :: k -> *) (p :: k) x.
Rep (M1 i c f p) x -> M1 i c f p
$cfrom :: forall i (c :: Meta) k (f :: k -> *) (p :: k) x.
M1 i c f p -> Rep (M1 i c f p) x
from :: forall x. M1 i c f p -> Rep (M1 i c f p) x
$cto :: forall i (c :: Meta) k (f :: k -> *) (p :: k) x.
Rep (M1 i c f p) x -> M1 i c f p
to :: forall x. Rep (M1 i c f p) x -> M1 i c f p
Generic  
           , (forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) a)
-> (forall (a :: k). Rep1 (M1 i c f) a -> M1 i c f a)
-> Generic1 (M1 i c f)
forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) a
forall (a :: k). Rep1 (M1 i c f) a -> M1 i c f a
forall i (c :: Meta) k (f :: k -> *) (a :: k).
M1 i c f a -> Rep1 (M1 i c f) a
forall i (c :: Meta) k (f :: k -> *) (a :: k).
Rep1 (M1 i c f) a -> M1 i c f a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall i (c :: Meta) k (f :: k -> *) (a :: k).
M1 i c f a -> Rep1 (M1 i c f) a
from1 :: forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) a
$cto1 :: forall i (c :: Meta) k (f :: k -> *) (a :: k).
Rep1 (M1 i c f) a -> M1 i c f a
to1 :: forall (a :: k). Rep1 (M1 i c f) a -> M1 i c f a
Generic1 
           )


infixr 5 :+:
data (:+:) (f :: k -> Type) (g :: k -> Type) (p :: k) = L1 (f p) | R1 (g p)
  deriving ( (:+:) f g p -> (:+:) f g p -> Bool
((:+:) f g p -> (:+:) f g p -> Bool)
-> ((:+:) f g p -> (:+:) f g p -> Bool) -> Eq ((:+:) f g p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Eq (f p), Eq (g p)) =>
(:+:) f g p -> (:+:) f g p -> Bool
$c== :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Eq (f p), Eq (g p)) =>
(:+:) f g p -> (:+:) f g p -> Bool
== :: (:+:) f g p -> (:+:) f g p -> Bool
$c/= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Eq (f p), Eq (g p)) =>
(:+:) f g p -> (:+:) f g p -> Bool
/= :: (:+:) f g p -> (:+:) f g p -> Bool
Eq       
           , Eq ((:+:) f g p) Eq ((:+:) f g p) => ((:+:) f g p -> (:+:) f g p -> Ordering) -> ((:+:) f g p -> (:+:) f g p -> Bool) -> ((:+:) f g p -> (:+:) f g p -> Bool) -> ((:+:) f g p -> (:+:) f g p -> Bool) -> ((:+:) f g p -> (:+:) f g p -> Bool) -> ((:+:) f g p -> (:+:) f g p -> (:+:) f g p) -> ((:+:) f g p -> (:+:) f g p -> (:+:) f g p) -> Ord ((:+:) f g p) (:+:) f g p -> (:+:) f g p -> Bool (:+:) f g p -> (:+:) f g p -> Ordering (:+:) f g p -> (:+:) f g p -> (:+:) f g p 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 k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => Eq ((:+:) f g p) forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Bool forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Ordering forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> (:+:) f g p $ccompare :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Ordering compare :: (:+:) f g p -> (:+:) f g p -> Ordering $c< :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Bool < :: (:+:) f g p -> (:+:) f g p -> Bool $c<= :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Bool <= :: (:+:) f g p -> (:+:) f g p -> Bool $c> :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Bool > :: (:+:) f g p -> (:+:) f g p -> Bool $c>= :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> Bool >= :: (:+:) f g p -> (:+:) f g p -> Bool $cmax :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> (:+:) f g p max :: (:+:) f g p -> (:+:) f g p -> (:+:) f g p $cmin :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:+:) f g p -> (:+:) f g p -> (:+:) f g p min :: (:+:) f g p -> (:+:) f g p -> (:+:) f g p Ord      
           , ReadPrec [(:+:) f g p] ReadPrec ((:+:) f g p) Int -> ReadS ((:+:) f g p) ReadS [(:+:) f g p] (Int -> ReadS ((:+:) f g p)) -> ReadS [(:+:) f g p] -> ReadPrec ((:+:) f g p) -> ReadPrec [(:+:) f g p] -> Read ((:+:) f g p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec [(:+:) f g p] forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec ((:+:) f g p) forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => Int -> ReadS ((:+:) f g p) forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadS [(:+:) f g p] $creadsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => Int -> ReadS ((:+:) f g p) readsPrec :: Int -> ReadS ((:+:) f g p) $creadList :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadS [(:+:) f g p] readList :: ReadS [(:+:) f g p] $creadPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec ((:+:) f g p) readPrec :: ReadPrec ((:+:) f g p) $creadListPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec [(:+:) f g p] readListPrec :: ReadPrec [(:+:) f g p] Read     
           , Int -> (:+:) f g p -> ShowS
[(:+:) f g p] -> ShowS
(:+:) f g p -> String
(Int -> (:+:) f g p -> ShowS)
-> ((:+:) f g p -> String)
-> ([(:+:) f g p] -> ShowS)
-> Show ((:+:) f g p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
Int -> (:+:) f g p -> ShowS
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
[(:+:) f g p] -> ShowS
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
(:+:) f g p -> String
$cshowsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
Int -> (:+:) f g p -> ShowS
showsPrec :: Int -> (:+:) f g p -> ShowS
$cshow :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
(:+:) f g p -> String
show :: (:+:) f g p -> String
$cshowList :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
[(:+:) f g p] -> ShowS
showList :: [(:+:) f g p] -> ShowS
Show     
           , (forall a b. (a -> b) -> (:+:) f g a -> (:+:) f g b)
-> (forall a b. a -> (:+:) f g b -> (:+:) f g a)
-> Functor (f :+: g)
forall a b. a -> (:+:) f g b -> (:+:) f g a
forall a b. (a -> b) -> (:+:) f g a -> (:+:) f g b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
a -> (:+:) f g b -> (:+:) f g a
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> (:+:) f g a -> (:+:) f g b
$cfmap :: forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> (:+:) f g a -> (:+:) f g b
fmap :: forall a b. (a -> b) -> (:+:) f g a -> (:+:) f g b
$c<$ :: forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
a -> (:+:) f g b -> (:+:) f g a
<$ :: forall a b. a -> (:+:) f g b -> (:+:) f g a
Functor  
           , (forall x. (:+:) f g p -> Rep ((:+:) f g p) x)
-> (forall x. Rep ((:+:) f g p) x -> (:+:) f g p)
-> Generic ((:+:) f g p)
forall x. (:+:) f g p -> Rep ((:+:) f g p) x
forall x. Rep ((:+:) f g p) x -> (:+:) f g p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
(:+:) f g p -> Rep ((:+:) f g p) x
forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
Rep ((:+:) f g p) x -> (:+:) f g p
$cfrom :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
(:+:) f g p -> Rep ((:+:) f g p) x
from :: forall x. (:+:) f g p -> Rep ((:+:) f g p) x
$cto :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
Rep ((:+:) f g p) x -> (:+:) f g p
to :: forall x. Rep ((:+:) f g p) x -> (:+:) f g p
Generic  
           , (forall (a :: k). (:+:) f g a -> Rep1 (f :+: g) a)
-> (forall (a :: k). Rep1 (f :+: g) a -> (:+:) f g a)
-> Generic1 (f :+: g)
forall (a :: k). (:+:) f g a -> Rep1 (f :+: g) a
forall (a :: k). Rep1 (f :+: g) a -> (:+:) f g a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
forall k (f :: k -> *) (g :: k -> *) (a :: k).
(:+:) f g a -> Rep1 (f :+: g) a
forall k (f :: k -> *) (g :: k -> *) (a :: k).
Rep1 (f :+: g) a -> (:+:) f g a
$cfrom1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).
(:+:) f g a -> Rep1 (f :+: g) a
from1 :: forall (a :: k). (:+:) f g a -> Rep1 (f :+: g) a
$cto1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).
Rep1 (f :+: g) a -> (:+:) f g a
to1 :: forall (a :: k). Rep1 (f :+: g) a -> (:+:) f g a
Generic1 
           )


infixr 6 :*:
data (:*:) (f :: k -> Type) (g :: k -> Type) (p :: k) = f p :*: g p
  deriving ( (:*:) f g p -> (:*:) f g p -> Bool
((:*:) f g p -> (:*:) f g p -> Bool)
-> ((:*:) f g p -> (:*:) f g p -> Bool) -> Eq ((:*:) f g p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Eq (f p), Eq (g p)) =>
(:*:) f g p -> (:*:) f g p -> Bool
$c== :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Eq (f p), Eq (g p)) =>
(:*:) f g p -> (:*:) f g p -> Bool
== :: (:*:) f g p -> (:*:) f g p -> Bool
$c/= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Eq (f p), Eq (g p)) =>
(:*:) f g p -> (:*:) f g p -> Bool
/= :: (:*:) f g p -> (:*:) f g p -> Bool
Eq       
           , Eq ((:*:) f g p) Eq ((:*:) f g p) => ((:*:) f g p -> (:*:) f g p -> Ordering) -> ((:*:) f g p -> (:*:) f g p -> Bool) -> ((:*:) f g p -> (:*:) f g p -> Bool) -> ((:*:) f g p -> (:*:) f g p -> Bool) -> ((:*:) f g p -> (:*:) f g p -> Bool) -> ((:*:) f g p -> (:*:) f g p -> (:*:) f g p) -> ((:*:) f g p -> (:*:) f g p -> (:*:) f g p) -> Ord ((:*:) f g p) (:*:) f g p -> (:*:) f g p -> Bool (:*:) f g p -> (:*:) f g p -> Ordering (:*:) f g p -> (:*:) f g p -> (:*:) f g p 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 k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => Eq ((:*:) f g p) forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Bool forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Ordering forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> (:*:) f g p $ccompare :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Ordering compare :: (:*:) f g p -> (:*:) f g p -> Ordering $c< :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Bool < :: (:*:) f g p -> (:*:) f g p -> Bool $c<= :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Bool <= :: (:*:) f g p -> (:*:) f g p -> Bool $c> :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Bool > :: (:*:) f g p -> (:*:) f g p -> Bool $c>= :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> Bool >= :: (:*:) f g p -> (:*:) f g p -> Bool $cmax :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> (:*:) f g p max :: (:*:) f g p -> (:*:) f g p -> (:*:) f g p $cmin :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Ord (f p), Ord (g p)) => (:*:) f g p -> (:*:) f g p -> (:*:) f g p min :: (:*:) f g p -> (:*:) f g p -> (:*:) f g p Ord      
           , ReadPrec [(:*:) f g p] ReadPrec ((:*:) f g p) Int -> ReadS ((:*:) f g p) ReadS [(:*:) f g p] (Int -> ReadS ((:*:) f g p)) -> ReadS [(:*:) f g p] -> ReadPrec ((:*:) f g p) -> ReadPrec [(:*:) f g p] -> Read ((:*:) f g p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec [(:*:) f g p] forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec ((:*:) f g p) forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => Int -> ReadS ((:*:) f g p) forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadS [(:*:) f g p] $creadsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => Int -> ReadS ((:*:) f g p) readsPrec :: Int -> ReadS ((:*:) f g p) $creadList :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadS [(:*:) f g p] readList :: ReadS [(:*:) f g p] $creadPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec ((:*:) f g p) readPrec :: ReadPrec ((:*:) f g p) $creadListPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k). (Read (f p), Read (g p)) => ReadPrec [(:*:) f g p] readListPrec :: ReadPrec [(:*:) f g p] Read     
           , Int -> (:*:) f g p -> ShowS
[(:*:) f g p] -> ShowS
(:*:) f g p -> String
(Int -> (:*:) f g p -> ShowS)
-> ((:*:) f g p -> String)
-> ([(:*:) f g p] -> ShowS)
-> Show ((:*:) f g p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
Int -> (:*:) f g p -> ShowS
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
[(:*:) f g p] -> ShowS
forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
(:*:) f g p -> String
$cshowsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
Int -> (:*:) f g p -> ShowS
showsPrec :: Int -> (:*:) f g p -> ShowS
$cshow :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
(:*:) f g p -> String
show :: (:*:) f g p -> String
$cshowList :: forall k (f :: k -> *) (g :: k -> *) (p :: k).
(Show (f p), Show (g p)) =>
[(:*:) f g p] -> ShowS
showList :: [(:*:) f g p] -> ShowS
Show     
           , (forall a b. (a -> b) -> (:*:) f g a -> (:*:) f g b)
-> (forall a b. a -> (:*:) f g b -> (:*:) f g a)
-> Functor (f :*: g)
forall a b. a -> (:*:) f g b -> (:*:) f g a
forall a b. (a -> b) -> (:*:) f g a -> (:*:) f g b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
a -> (:*:) f g b -> (:*:) f g a
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> (:*:) f g a -> (:*:) f g b
$cfmap :: forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> (:*:) f g a -> (:*:) f g b
fmap :: forall a b. (a -> b) -> (:*:) f g a -> (:*:) f g b
$c<$ :: forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
a -> (:*:) f g b -> (:*:) f g a
<$ :: forall a b. a -> (:*:) f g b -> (:*:) f g a
Functor  
           , (forall x. (:*:) f g p -> Rep ((:*:) f g p) x)
-> (forall x. Rep ((:*:) f g p) x -> (:*:) f g p)
-> Generic ((:*:) f g p)
forall x. (:*:) f g p -> Rep ((:*:) f g p) x
forall x. Rep ((:*:) f g p) x -> (:*:) f g p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
(:*:) f g p -> Rep ((:*:) f g p) x
forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
Rep ((:*:) f g p) x -> (:*:) f g p
$cfrom :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
(:*:) f g p -> Rep ((:*:) f g p) x
from :: forall x. (:*:) f g p -> Rep ((:*:) f g p) x
$cto :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.
Rep ((:*:) f g p) x -> (:*:) f g p
to :: forall x. Rep ((:*:) f g p) x -> (:*:) f g p
Generic  
           , (forall (a :: k). (:*:) f g a -> Rep1 (f :*: g) a)
-> (forall (a :: k). Rep1 (f :*: g) a -> (:*:) f g a)
-> Generic1 (f :*: g)
forall (a :: k). (:*:) f g a -> Rep1 (f :*: g) a
forall (a :: k). Rep1 (f :*: g) a -> (:*:) f g a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
forall k (f :: k -> *) (g :: k -> *) (a :: k).
(:*:) f g a -> Rep1 (f :*: g) a
forall k (f :: k -> *) (g :: k -> *) (a :: k).
Rep1 (f :*: g) a -> (:*:) f g a
$cfrom1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).
(:*:) f g a -> Rep1 (f :*: g) a
from1 :: forall (a :: k). (:*:) f g a -> Rep1 (f :*: g) a
$cto1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).
Rep1 (f :*: g) a -> (:*:) f g a
to1 :: forall (a :: k). Rep1 (f :*: g) a -> (:*:) f g a
Generic1 
           )


instance (Applicative f, Applicative g) => Applicative (f :*: g) where
  pure :: forall a. a -> (:*:) f g a
pure a
a = a -> f a
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
a f a -> g a -> (:*:) f g a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: a -> g a
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
a
  (f (a -> b)
f :*: g (a -> b)
g) <*> :: forall a b. (:*:) f g (a -> b) -> (:*:) f g a -> (:*:) f g b
<*> (f a
x :*: g a
y) = (f (a -> b)
f f (a -> b) -> f a -> f b
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
x) f b -> g b -> (:*:) f g b
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: (g (a -> b)
g g (a -> b) -> g a -> g b
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> g a
y)
  liftA2 :: forall a b c.
(a -> b -> c) -> (:*:) f g a -> (:*:) f g b -> (:*:) f g c
liftA2 a -> b -> c
f (f a
a :*: g a
b) (f b
x :*: g b
y) = (a -> b -> c) -> f a -> f b -> f c
forall a b c. (a -> b -> c) -> f a -> f b -> f c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> b -> c
f f a
a f b
x f c -> g c -> (:*:) f g c
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: (a -> b -> c) -> g a -> g b -> g c
forall a b c. (a -> b -> c) -> g a -> g b -> g c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> b -> c
f g a
b g b
y


instance (Alternative f, Alternative g) => Alternative (f :*: g) where
  empty :: forall a. (:*:) f g a
empty = f a
forall a. f a
forall (f :: * -> *) a. Alternative f => f a
empty f a -> g a -> (:*:) f g a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: g a
forall a. g a
forall (f :: * -> *) a. Alternative f => f a
empty
  (f a
x1 :*: g a
y1) <|> :: forall a. (:*:) f g a -> (:*:) f g a -> (:*:) f g a
<|> (f a
x2 :*: g a
y2) = (f a
x1 f a -> f a -> f a
forall a. f a -> f a -> f a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> f a
x2) f a -> g a -> (:*:) f g a
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: (g a
y1 g a -> g a -> g a
forall a. g a -> g a -> g a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> g a
y2)


instance (Monad f, Monad g) => Monad (f :*: g) where
  (f a
m :*: g a
n) >>= :: forall a b. (:*:) f g a -> (a -> (:*:) f g b) -> (:*:) f g b
>>= a -> (:*:) f g b
f = (f a
m f a -> (a -> f b) -> f b
forall a b. f a -> (a -> f b) -> f b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \a
a -> (:*:) f g b -> f b
forall {k} {f :: k -> *} {g :: k -> *} {p :: k}. (:*:) f g p -> f p
fstP (a -> (:*:) f g b
f a
a)) f b -> g b -> (:*:) f g b
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: (g a
n g a -> (a -> g b) -> g b
forall a b. g a -> (a -> g b) -> g b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \a
a -> (:*:) f g b -> g b
forall {k} {f :: k -> *} {g :: k -> *} {p :: k}. (:*:) f g p -> g p
sndP (a -> (:*:) f g b
f a
a))
    where
      fstP :: (:*:) f g p -> f p
fstP (f p
a :*: g p
_) = f p
a
      sndP :: (:*:) f g p -> g p
sndP (f p
_ :*: g p
b) = g p
b


instance (MonadPlus f, MonadPlus g) => MonadPlus (f :*: g)


instance (Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) where
  (f p
x1 :*: g p
y1) <> :: (:*:) f g p -> (:*:) f g p -> (:*:) f g p
<> (f p
x2 :*: g p
y2) = (f p
x1 f p -> f p -> f p
forall a. Semigroup a => a -> a -> a
<> f p
x2) f p -> g p -> (:*:) f g p
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: (g p
y1 g p -> g p -> g p
forall a. Semigroup a => a -> a -> a
<> g p
y2)


instance (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) where
  mempty :: (:*:) f g p
mempty = f p
forall a. Monoid a => a
mempty f p -> g p -> (:*:) f g p
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: g p
forall a. Monoid a => a
mempty


infixr 7 :.:
newtype (:.:) (f :: k2 -> Type) (g :: k1 -> k2) (p :: k1) =
    Comp1 { forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
(:.:) f g p -> f (g p)
unComp1 :: f (g p) }
  deriving ( (:.:) f g p -> (:.:) f g p -> Bool
((:.:) f g p -> (:.:) f g p -> Bool)
-> ((:.:) f g p -> (:.:) f g p -> Bool) -> Eq ((:.:) f g p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Eq (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> Bool
$c== :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Eq (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> Bool
== :: (:.:) f g p -> (:.:) f g p -> Bool
$c/= :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Eq (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> Bool
/= :: (:.:) f g p -> (:.:) f g p -> Bool
Eq       
           , Eq ((:.:) f g p) Eq ((:.:) f g p) => ((:.:) f g p -> (:.:) f g p -> Ordering) -> ((:.:) f g p -> (:.:) f g p -> Bool) -> ((:.:) f g p -> (:.:) f g p -> Bool) -> ((:.:) f g p -> (:.:) f g p -> Bool) -> ((:.:) f g p -> (:.:) f g p -> Bool) -> ((:.:) f g p -> (:.:) f g p -> (:.:) f g p) -> ((:.:) f g p -> (:.:) f g p -> (:.:) f g p) -> Ord ((:.:) f g p) (:.:) f g p -> (:.:) f g p -> Bool (:.:) f g p -> (:.:) f g p -> Ordering (:.:) f g p -> (:.:) f g p -> (:.:) f g p 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 k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => Eq ((:.:) f g p) forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Bool forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Ordering forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> (:.:) f g p $ccompare :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Ordering compare :: (:.:) f g p -> (:.:) f g p -> Ordering $c< :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Bool < :: (:.:) f g p -> (:.:) f g p -> Bool $c<= :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Bool <= :: (:.:) f g p -> (:.:) f g p -> Bool $c> :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Bool > :: (:.:) f g p -> (:.:) f g p -> Bool $c>= :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> Bool >= :: (:.:) f g p -> (:.:) f g p -> Bool $cmax :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> (:.:) f g p max :: (:.:) f g p -> (:.:) f g p -> (:.:) f g p $cmin :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Ord (f (g p)) => (:.:) f g p -> (:.:) f g p -> (:.:) f g p min :: (:.:) f g p -> (:.:) f g p -> (:.:) f g p Ord      
           , ReadPrec [(:.:) f g p] ReadPrec ((:.:) f g p) Int -> ReadS ((:.:) f g p) ReadS [(:.:) f g p] (Int -> ReadS ((:.:) f g p)) -> ReadS [(:.:) f g p] -> ReadPrec ((:.:) f g p) -> ReadPrec [(:.:) f g p] -> Read ((:.:) f g p) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => ReadPrec [(:.:) f g p] forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => ReadPrec ((:.:) f g p) forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => Int -> ReadS ((:.:) f g p) forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => ReadS [(:.:) f g p] $creadsPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => Int -> ReadS ((:.:) f g p) readsPrec :: Int -> ReadS ((:.:) f g p) $creadList :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => ReadS [(:.:) f g p] readList :: ReadS [(:.:) f g p] $creadPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => ReadPrec ((:.:) f g p) readPrec :: ReadPrec ((:.:) f g p) $creadListPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1). Read (f (g p)) => ReadPrec [(:.:) f g p] readListPrec :: ReadPrec [(:.:) f g p] Read     
           , Int -> (:.:) f g p -> ShowS
[(:.:) f g p] -> ShowS
(:.:) f g p -> String
(Int -> (:.:) f g p -> ShowS)
-> ((:.:) f g p -> String)
-> ([(:.:) f g p] -> ShowS)
-> Show ((:.:) f g p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
Int -> (:.:) f g p -> ShowS
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
[(:.:) f g p] -> ShowS
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
(:.:) f g p -> String
$cshowsPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
Int -> (:.:) f g p -> ShowS
showsPrec :: Int -> (:.:) f g p -> ShowS
$cshow :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
(:.:) f g p -> String
show :: (:.:) f g p -> String
$cshowList :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
[(:.:) f g p] -> ShowS
showList :: [(:.:) f g p] -> ShowS
Show     
           , (forall a b. (a -> b) -> (:.:) f g a -> (:.:) f g b)
-> (forall a b. a -> (:.:) f g b -> (:.:) f g a)
-> Functor (f :.: g)
forall a b. a -> (:.:) f g b -> (:.:) f g a
forall a b. (a -> b) -> (:.:) f g a -> (:.:) f g b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
a -> (:.:) f g b -> (:.:) f g a
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> (:.:) f g a -> (:.:) f g b
$cfmap :: forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> (:.:) f g a -> (:.:) f g b
fmap :: forall a b. (a -> b) -> (:.:) f g a -> (:.:) f g b
$c<$ :: forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
a -> (:.:) f g b -> (:.:) f g a
<$ :: forall a b. a -> (:.:) f g b -> (:.:) f g a
Functor  
           , (forall x. (:.:) f g p -> Rep ((:.:) f g p) x)
-> (forall x. Rep ((:.:) f g p) x -> (:.:) f g p)
-> Generic ((:.:) f g p)
forall x. (:.:) f g p -> Rep ((:.:) f g p) x
forall x. Rep ((:.:) f g p) x -> (:.:) f g p
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.
(:.:) f g p -> Rep ((:.:) f g p) x
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.
Rep ((:.:) f g p) x -> (:.:) f g p
$cfrom :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.
(:.:) f g p -> Rep ((:.:) f g p) x
from :: forall x. (:.:) f g p -> Rep ((:.:) f g p) x
$cto :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.
Rep ((:.:) f g p) x -> (:.:) f g p
to :: forall x. Rep ((:.:) f g p) x -> (:.:) f g p
Generic  
           , (forall (a :: k). (:.:) f g a -> Rep1 (f :.: g) a)
-> (forall (a :: k). Rep1 (f :.: g) a -> (:.:) f g a)
-> Generic1 (f :.: g)
forall (a :: k). (:.:) f g a -> Rep1 (f :.: g) a
forall (a :: k). Rep1 (f :.: g) a -> (:.:) f g a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
forall (f :: * -> *) k (g :: k -> *) (a :: k).
Functor f =>
(:.:) f g a -> Rep1 (f :.: g) a
forall (f :: * -> *) k (g :: k -> *) (a :: k).
Functor f =>
Rep1 (f :.: g) a -> (:.:) f g a
$cfrom1 :: forall (f :: * -> *) k (g :: k -> *) (a :: k).
Functor f =>
(:.:) f g a -> Rep1 (f :.: g) a
from1 :: forall (a :: k). (:.:) f g a -> Rep1 (f :.: g) a
$cto1 :: forall (f :: * -> *) k (g :: k -> *) (a :: k).
Functor f =>
Rep1 (f :.: g) a -> (:.:) f g a
to1 :: forall (a :: k). Rep1 (f :.: g) a -> (:.:) f g a
Generic1 
           )


instance (Applicative f, Applicative g) => Applicative (f :.: g) where
  pure :: forall a. a -> (:.:) f g a
pure a
x = f (g a) -> (:.:) f g a
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
f (g p) -> (:.:) f g p
Comp1 (g a -> f (g a)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> g a
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
x))
  Comp1 f (g (a -> b))
f <*> :: forall a b. (:.:) f g (a -> b) -> (:.:) f g a -> (:.:) f g b
<*> Comp1 f (g a)
x = f (g b) -> (:.:) f g b
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
f (g p) -> (:.:) f g p
Comp1 ((g (a -> b) -> g a -> g b) -> f (g (a -> b)) -> f (g a) -> f (g b)
forall a b c. (a -> b -> c) -> f a -> f b -> f c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 g (a -> b) -> g a -> g b
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
(<*>) f (g (a -> b))
f f (g a)
x)
  liftA2 :: forall a b c.
(a -> b -> c) -> (:.:) f g a -> (:.:) f g b -> (:.:) f g c
liftA2 a -> b -> c
f (Comp1 f (g a)
x) (Comp1 f (g b)
y) = f (g c) -> (:.:) f g c
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
f (g p) -> (:.:) f g p
Comp1 ((g a -> g b -> g c) -> f (g a) -> f (g b) -> f (g c)
forall a b c. (a -> b -> c) -> f a -> f b -> f c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 ((a -> b -> c) -> g a -> g b -> g c
forall a b c. (a -> b -> c) -> g a -> g b -> g c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> b -> c
f) f (g a)
x f (g b)
y)


instance (Alternative f, Applicative g) => Alternative (f :.: g) where
  empty :: forall a. (:.:) f g a
empty = f (g a) -> (:.:) f g a
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
f (g p) -> (:.:) f g p
Comp1 f (g a)
forall a. f a
forall (f :: * -> *) a. Alternative f => f a
empty
  <|> :: forall a. (:.:) f g a -> (:.:) f g a -> (:.:) f g a
(<|>) = (f (g a) -> f (g a) -> f (g a))
-> (:.:) f g a -> (:.:) f g a -> (:.:) f g a
forall a b. Coercible a b => a -> b
coerce (f (g a) -> f (g a) -> f (g a)
forall a. f a -> f a -> f a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
(<|>) :: f (g a) -> f (g a) -> f (g a)) ::
    forall a . (f :.: g) a -> (f :.: g) a -> (f :.: g) a


deriving instance Semigroup (f (g p)) => Semigroup ((f :.: g) p)


deriving instance Monoid (f (g p)) => Monoid ((f :.: g) p)




data family URec (a :: Type) (p :: k)




data instance URec (Ptr ()) (p :: k) = UAddr { forall k (p :: k). URec (Ptr ()) p -> Addr#
uAddr# :: Addr# }
  deriving ( URec (Ptr ()) p -> URec (Ptr ()) p -> Bool
(URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)
-> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)
-> Eq (URec (Ptr ()) p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool
$c== :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool
== :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool
$c/= :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool
/= :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool
Eq       
           , Eq (URec (Ptr ()) p) Eq (URec (Ptr ()) p) => (URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering) -> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool) -> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool) -> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool) -> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool) -> (URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p) -> (URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p) -> Ord (URec (Ptr ()) p) URec (Ptr ()) p -> URec (Ptr ()) p -> Bool URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p 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 k (p :: k). Eq (URec (Ptr ()) p) forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p $ccompare :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering compare :: URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering $c< :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool < :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool $c<= :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool <= :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool $c> :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool > :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool $c>= :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool >= :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool $cmax :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p max :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p $cmin :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p min :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p Ord      
           , (forall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b)
-> (forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) a)
-> Functor (URec (Ptr ()))
forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) a
forall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) 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) -> URec (Ptr ()) a -> URec (Ptr ()) b
fmap :: forall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b
$c<$ :: forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) a
<$ :: forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) a
Functor  
           , (forall x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x)
-> (forall x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p)
-> Generic (URec (Ptr ()) p)
forall x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p
forall x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p
forall k (p :: k) x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x
$cfrom :: forall k (p :: k) x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x
from :: forall x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x
$cto :: forall k (p :: k) x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p
to :: forall x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p
Generic  
           , (forall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a)
-> (forall (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a)
-> Generic1 (URec (Ptr ()))
forall (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a
forall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a
forall k (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a
forall k (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a
from1 :: forall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a
$cto1 :: forall k (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a
to1 :: forall (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a
Generic1 
           )


instance Show (UAddr p) where
  
  
  showsPrec :: Int -> UAddr p -> ShowS
showsPrec Int
d (UAddr Addr#
x) =
    Bool -> ShowS -> ShowS
showParen (Int
d Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
appPrec)
      (\String
y -> String -> ShowS
showString String
"UAddr {uAddr# = " (Int -> Ptr (ZonkAny 0) -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
0 (Addr# -> Ptr (ZonkAny 0)
forall a. Addr# -> Ptr a
Ptr Addr#
x) (Char -> ShowS
showChar Char
'}' String
y)))




data instance URec Char (p :: k) = UChar { forall k (p :: k). URec Char p -> Char#
uChar# :: Char# }
  deriving ( URec Char p -> URec Char p -> Bool
(URec Char p -> URec Char p -> Bool)
-> (URec Char p -> URec Char p -> Bool) -> Eq (URec Char p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). URec Char p -> URec Char p -> Bool
$c== :: forall k (p :: k). URec Char p -> URec Char p -> Bool
== :: URec Char p -> URec Char p -> Bool
$c/= :: forall k (p :: k). URec Char p -> URec Char p -> Bool
/= :: URec Char p -> URec Char p -> Bool
Eq       
           , Eq (URec Char p) Eq (URec Char p) => (URec Char p -> URec Char p -> Ordering) -> (URec Char p -> URec Char p -> Bool) -> (URec Char p -> URec Char p -> Bool) -> (URec Char p -> URec Char p -> Bool) -> (URec Char p -> URec Char p -> Bool) -> (URec Char p -> URec Char p -> URec Char p) -> (URec Char p -> URec Char p -> URec Char p) -> Ord (URec Char p) URec Char p -> URec Char p -> Bool URec Char p -> URec Char p -> Ordering URec Char p -> URec Char p -> URec Char p 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 k (p :: k). Eq (URec Char p) forall k (p :: k). URec Char p -> URec Char p -> Bool forall k (p :: k). URec Char p -> URec Char p -> Ordering forall k (p :: k). URec Char p -> URec Char p -> URec Char p $ccompare :: forall k (p :: k). URec Char p -> URec Char p -> Ordering compare :: URec Char p -> URec Char p -> Ordering $c< :: forall k (p :: k). URec Char p -> URec Char p -> Bool < :: URec Char p -> URec Char p -> Bool $c<= :: forall k (p :: k). URec Char p -> URec Char p -> Bool <= :: URec Char p -> URec Char p -> Bool $c> :: forall k (p :: k). URec Char p -> URec Char p -> Bool > :: URec Char p -> URec Char p -> Bool $c>= :: forall k (p :: k). URec Char p -> URec Char p -> Bool >= :: URec Char p -> URec Char p -> Bool $cmax :: forall k (p :: k). URec Char p -> URec Char p -> URec Char p max :: URec Char p -> URec Char p -> URec Char p $cmin :: forall k (p :: k). URec Char p -> URec Char p -> URec Char p min :: URec Char p -> URec Char p -> URec Char p Ord      
           , Int -> URec Char p -> ShowS
[URec Char p] -> ShowS
URec Char p -> String
(Int -> URec Char p -> ShowS)
-> (URec Char p -> String)
-> ([URec Char p] -> ShowS)
-> Show (URec Char p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (p :: k). Int -> URec Char p -> ShowS
forall k (p :: k). [URec Char p] -> ShowS
forall k (p :: k). URec Char p -> String
$cshowsPrec :: forall k (p :: k). Int -> URec Char p -> ShowS
showsPrec :: Int -> URec Char p -> ShowS
$cshow :: forall k (p :: k). URec Char p -> String
show :: URec Char p -> String
$cshowList :: forall k (p :: k). [URec Char p] -> ShowS
showList :: [URec Char p] -> ShowS
Show     
           , (forall a b. (a -> b) -> URec Char a -> URec Char b)
-> (forall a b. a -> URec Char b -> URec Char a)
-> Functor (URec Char)
forall a b. a -> URec Char b -> URec Char a
forall a b. (a -> b) -> URec Char a -> URec Char 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) -> URec Char a -> URec Char b
fmap :: forall a b. (a -> b) -> URec Char a -> URec Char b
$c<$ :: forall a b. a -> URec Char b -> URec Char a
<$ :: forall a b. a -> URec Char b -> URec Char a
Functor  
           , (forall x. URec Char p -> Rep (URec Char p) x)
-> (forall x. Rep (URec Char p) x -> URec Char p)
-> Generic (URec Char p)
forall x. Rep (URec Char p) x -> URec Char p
forall x. URec Char p -> Rep (URec Char p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. Rep (URec Char p) x -> URec Char p
forall k (p :: k) x. URec Char p -> Rep (URec Char p) x
$cfrom :: forall k (p :: k) x. URec Char p -> Rep (URec Char p) x
from :: forall x. URec Char p -> Rep (URec Char p) x
$cto :: forall k (p :: k) x. Rep (URec Char p) x -> URec Char p
to :: forall x. Rep (URec Char p) x -> URec Char p
Generic  
           , (forall (a :: k). URec Char a -> Rep1 (URec Char) a)
-> (forall (a :: k). Rep1 (URec Char) a -> URec Char a)
-> Generic1 (URec Char)
forall (a :: k). Rep1 (URec Char) a -> URec Char a
forall (a :: k). URec Char a -> Rep1 (URec Char) a
forall k (a :: k). Rep1 (URec Char) a -> URec Char a
forall k (a :: k). URec Char a -> Rep1 (URec Char) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). URec Char a -> Rep1 (URec Char) a
from1 :: forall (a :: k). URec Char a -> Rep1 (URec Char) a
$cto1 :: forall k (a :: k). Rep1 (URec Char) a -> URec Char a
to1 :: forall (a :: k). Rep1 (URec Char) a -> URec Char a
Generic1 
           )




data instance URec Double (p :: k) = UDouble { forall k (p :: k). URec Double p -> Double#
uDouble# :: Double# }
  deriving ( URec Double p -> URec Double p -> Bool
(URec Double p -> URec Double p -> Bool)
-> (URec Double p -> URec Double p -> Bool) -> Eq (URec Double p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). URec Double p -> URec Double p -> Bool
$c== :: forall k (p :: k). URec Double p -> URec Double p -> Bool
== :: URec Double p -> URec Double p -> Bool
$c/= :: forall k (p :: k). URec Double p -> URec Double p -> Bool
/= :: URec Double p -> URec Double p -> Bool
Eq       
           , Eq (URec Double p) Eq (URec Double p) => (URec Double p -> URec Double p -> Ordering) -> (URec Double p -> URec Double p -> Bool) -> (URec Double p -> URec Double p -> Bool) -> (URec Double p -> URec Double p -> Bool) -> (URec Double p -> URec Double p -> Bool) -> (URec Double p -> URec Double p -> URec Double p) -> (URec Double p -> URec Double p -> URec Double p) -> Ord (URec Double p) URec Double p -> URec Double p -> Bool URec Double p -> URec Double p -> Ordering URec Double p -> URec Double p -> URec Double p 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 k (p :: k). Eq (URec Double p) forall k (p :: k). URec Double p -> URec Double p -> Bool forall k (p :: k). URec Double p -> URec Double p -> Ordering forall k (p :: k). URec Double p -> URec Double p -> URec Double p $ccompare :: forall k (p :: k). URec Double p -> URec Double p -> Ordering compare :: URec Double p -> URec Double p -> Ordering $c< :: forall k (p :: k). URec Double p -> URec Double p -> Bool < :: URec Double p -> URec Double p -> Bool $c<= :: forall k (p :: k). URec Double p -> URec Double p -> Bool <= :: URec Double p -> URec Double p -> Bool $c> :: forall k (p :: k). URec Double p -> URec Double p -> Bool > :: URec Double p -> URec Double p -> Bool $c>= :: forall k (p :: k). URec Double p -> URec Double p -> Bool >= :: URec Double p -> URec Double p -> Bool $cmax :: forall k (p :: k). URec Double p -> URec Double p -> URec Double p max :: URec Double p -> URec Double p -> URec Double p $cmin :: forall k (p :: k). URec Double p -> URec Double p -> URec Double p min :: URec Double p -> URec Double p -> URec Double p Ord      
           , Int -> URec Double p -> ShowS
[URec Double p] -> ShowS
URec Double p -> String
(Int -> URec Double p -> ShowS)
-> (URec Double p -> String)
-> ([URec Double p] -> ShowS)
-> Show (URec Double p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (p :: k). Int -> URec Double p -> ShowS
forall k (p :: k). [URec Double p] -> ShowS
forall k (p :: k). URec Double p -> String
$cshowsPrec :: forall k (p :: k). Int -> URec Double p -> ShowS
showsPrec :: Int -> URec Double p -> ShowS
$cshow :: forall k (p :: k). URec Double p -> String
show :: URec Double p -> String
$cshowList :: forall k (p :: k). [URec Double p] -> ShowS
showList :: [URec Double p] -> ShowS
Show     
           , (forall a b. (a -> b) -> URec Double a -> URec Double b)
-> (forall a b. a -> URec Double b -> URec Double a)
-> Functor (URec Double)
forall a b. a -> URec Double b -> URec Double a
forall a b. (a -> b) -> URec Double a -> URec Double 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) -> URec Double a -> URec Double b
fmap :: forall a b. (a -> b) -> URec Double a -> URec Double b
$c<$ :: forall a b. a -> URec Double b -> URec Double a
<$ :: forall a b. a -> URec Double b -> URec Double a
Functor  
           , (forall x. URec Double p -> Rep (URec Double p) x)
-> (forall x. Rep (URec Double p) x -> URec Double p)
-> Generic (URec Double p)
forall x. Rep (URec Double p) x -> URec Double p
forall x. URec Double p -> Rep (URec Double p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. Rep (URec Double p) x -> URec Double p
forall k (p :: k) x. URec Double p -> Rep (URec Double p) x
$cfrom :: forall k (p :: k) x. URec Double p -> Rep (URec Double p) x
from :: forall x. URec Double p -> Rep (URec Double p) x
$cto :: forall k (p :: k) x. Rep (URec Double p) x -> URec Double p
to :: forall x. Rep (URec Double p) x -> URec Double p
Generic  
           , (forall (a :: k). URec Double a -> Rep1 (URec Double) a)
-> (forall (a :: k). Rep1 (URec Double) a -> URec Double a)
-> Generic1 (URec Double)
forall (a :: k). Rep1 (URec Double) a -> URec Double a
forall (a :: k). URec Double a -> Rep1 (URec Double) a
forall k (a :: k). Rep1 (URec Double) a -> URec Double a
forall k (a :: k). URec Double a -> Rep1 (URec Double) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). URec Double a -> Rep1 (URec Double) a
from1 :: forall (a :: k). URec Double a -> Rep1 (URec Double) a
$cto1 :: forall k (a :: k). Rep1 (URec Double) a -> URec Double a
to1 :: forall (a :: k). Rep1 (URec Double) a -> URec Double a
Generic1 
           )




data instance URec Float (p :: k) = UFloat { forall k (p :: k). URec Float p -> Float#
uFloat# :: Float# }
  deriving ( URec Float p -> URec Float p -> Bool
(URec Float p -> URec Float p -> Bool)
-> (URec Float p -> URec Float p -> Bool) -> Eq (URec Float p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). URec Float p -> URec Float p -> Bool
$c== :: forall k (p :: k). URec Float p -> URec Float p -> Bool
== :: URec Float p -> URec Float p -> Bool
$c/= :: forall k (p :: k). URec Float p -> URec Float p -> Bool
/= :: URec Float p -> URec Float p -> Bool
Eq, Eq (URec Float p) Eq (URec Float p) => (URec Float p -> URec Float p -> Ordering) -> (URec Float p -> URec Float p -> Bool) -> (URec Float p -> URec Float p -> Bool) -> (URec Float p -> URec Float p -> Bool) -> (URec Float p -> URec Float p -> Bool) -> (URec Float p -> URec Float p -> URec Float p) -> (URec Float p -> URec Float p -> URec Float p) -> Ord (URec Float p) URec Float p -> URec Float p -> Bool URec Float p -> URec Float p -> Ordering URec Float p -> URec Float p -> URec Float p 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 k (p :: k). Eq (URec Float p) forall k (p :: k). URec Float p -> URec Float p -> Bool forall k (p :: k). URec Float p -> URec Float p -> Ordering forall k (p :: k). URec Float p -> URec Float p -> URec Float p $ccompare :: forall k (p :: k). URec Float p -> URec Float p -> Ordering compare :: URec Float p -> URec Float p -> Ordering $c< :: forall k (p :: k). URec Float p -> URec Float p -> Bool < :: URec Float p -> URec Float p -> Bool $c<= :: forall k (p :: k). URec Float p -> URec Float p -> Bool <= :: URec Float p -> URec Float p -> Bool $c> :: forall k (p :: k). URec Float p -> URec Float p -> Bool > :: URec Float p -> URec Float p -> Bool $c>= :: forall k (p :: k). URec Float p -> URec Float p -> Bool >= :: URec Float p -> URec Float p -> Bool $cmax :: forall k (p :: k). URec Float p -> URec Float p -> URec Float p max :: URec Float p -> URec Float p -> URec Float p $cmin :: forall k (p :: k). URec Float p -> URec Float p -> URec Float p min :: URec Float p -> URec Float p -> URec Float p Ord, Int -> URec Float p -> ShowS
[URec Float p] -> ShowS
URec Float p -> String
(Int -> URec Float p -> ShowS)
-> (URec Float p -> String)
-> ([URec Float p] -> ShowS)
-> Show (URec Float p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (p :: k). Int -> URec Float p -> ShowS
forall k (p :: k). [URec Float p] -> ShowS
forall k (p :: k). URec Float p -> String
$cshowsPrec :: forall k (p :: k). Int -> URec Float p -> ShowS
showsPrec :: Int -> URec Float p -> ShowS
$cshow :: forall k (p :: k). URec Float p -> String
show :: URec Float p -> String
$cshowList :: forall k (p :: k). [URec Float p] -> ShowS
showList :: [URec Float p] -> ShowS
Show
           , (forall a b. (a -> b) -> URec Float a -> URec Float b)
-> (forall a b. a -> URec Float b -> URec Float a)
-> Functor (URec Float)
forall a b. a -> URec Float b -> URec Float a
forall a b. (a -> b) -> URec Float a -> URec Float 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) -> URec Float a -> URec Float b
fmap :: forall a b. (a -> b) -> URec Float a -> URec Float b
$c<$ :: forall a b. a -> URec Float b -> URec Float a
<$ :: forall a b. a -> URec Float b -> URec Float a
Functor  
           , (forall x. URec Float p -> Rep (URec Float p) x)
-> (forall x. Rep (URec Float p) x -> URec Float p)
-> Generic (URec Float p)
forall x. Rep (URec Float p) x -> URec Float p
forall x. URec Float p -> Rep (URec Float p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. Rep (URec Float p) x -> URec Float p
forall k (p :: k) x. URec Float p -> Rep (URec Float p) x
$cfrom :: forall k (p :: k) x. URec Float p -> Rep (URec Float p) x
from :: forall x. URec Float p -> Rep (URec Float p) x
$cto :: forall k (p :: k) x. Rep (URec Float p) x -> URec Float p
to :: forall x. Rep (URec Float p) x -> URec Float p
Generic
           , (forall (a :: k). URec Float a -> Rep1 (URec Float) a)
-> (forall (a :: k). Rep1 (URec Float) a -> URec Float a)
-> Generic1 (URec Float)
forall (a :: k). Rep1 (URec Float) a -> URec Float a
forall (a :: k). URec Float a -> Rep1 (URec Float) a
forall k (a :: k). Rep1 (URec Float) a -> URec Float a
forall k (a :: k). URec Float a -> Rep1 (URec Float) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). URec Float a -> Rep1 (URec Float) a
from1 :: forall (a :: k). URec Float a -> Rep1 (URec Float) a
$cto1 :: forall k (a :: k). Rep1 (URec Float) a -> URec Float a
to1 :: forall (a :: k). Rep1 (URec Float) a -> URec Float a
Generic1 
           )




data instance URec Int (p :: k) = UInt { forall k (p :: k). URec Int p -> Int#
uInt# :: Int# }
  deriving ( URec Int p -> URec Int p -> Bool
(URec Int p -> URec Int p -> Bool)
-> (URec Int p -> URec Int p -> Bool) -> Eq (URec Int p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). URec Int p -> URec Int p -> Bool
$c== :: forall k (p :: k). URec Int p -> URec Int p -> Bool
== :: URec Int p -> URec Int p -> Bool
$c/= :: forall k (p :: k). URec Int p -> URec Int p -> Bool
/= :: URec Int p -> URec Int p -> Bool
Eq       
           , Eq (URec Int p) Eq (URec Int p) => (URec Int p -> URec Int p -> Ordering) -> (URec Int p -> URec Int p -> Bool) -> (URec Int p -> URec Int p -> Bool) -> (URec Int p -> URec Int p -> Bool) -> (URec Int p -> URec Int p -> Bool) -> (URec Int p -> URec Int p -> URec Int p) -> (URec Int p -> URec Int p -> URec Int p) -> Ord (URec Int p) URec Int p -> URec Int p -> Bool URec Int p -> URec Int p -> Ordering URec Int p -> URec Int p -> URec Int p 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 k (p :: k). Eq (URec Int p) forall k (p :: k). URec Int p -> URec Int p -> Bool forall k (p :: k). URec Int p -> URec Int p -> Ordering forall k (p :: k). URec Int p -> URec Int p -> URec Int p $ccompare :: forall k (p :: k). URec Int p -> URec Int p -> Ordering compare :: URec Int p -> URec Int p -> Ordering $c< :: forall k (p :: k). URec Int p -> URec Int p -> Bool < :: URec Int p -> URec Int p -> Bool $c<= :: forall k (p :: k). URec Int p -> URec Int p -> Bool <= :: URec Int p -> URec Int p -> Bool $c> :: forall k (p :: k). URec Int p -> URec Int p -> Bool > :: URec Int p -> URec Int p -> Bool $c>= :: forall k (p :: k). URec Int p -> URec Int p -> Bool >= :: URec Int p -> URec Int p -> Bool $cmax :: forall k (p :: k). URec Int p -> URec Int p -> URec Int p max :: URec Int p -> URec Int p -> URec Int p $cmin :: forall k (p :: k). URec Int p -> URec Int p -> URec Int p min :: URec Int p -> URec Int p -> URec Int p Ord      
           , Int -> URec Int p -> ShowS
[URec Int p] -> ShowS
URec Int p -> String
(Int -> URec Int p -> ShowS)
-> (URec Int p -> String)
-> ([URec Int p] -> ShowS)
-> Show (URec Int p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (p :: k). Int -> URec Int p -> ShowS
forall k (p :: k). [URec Int p] -> ShowS
forall k (p :: k). URec Int p -> String
$cshowsPrec :: forall k (p :: k). Int -> URec Int p -> ShowS
showsPrec :: Int -> URec Int p -> ShowS
$cshow :: forall k (p :: k). URec Int p -> String
show :: URec Int p -> String
$cshowList :: forall k (p :: k). [URec Int p] -> ShowS
showList :: [URec Int p] -> ShowS
Show     
           , (forall a b. (a -> b) -> URec Int a -> URec Int b)
-> (forall a b. a -> URec Int b -> URec Int a)
-> Functor (URec Int)
forall a b. a -> URec Int b -> URec Int a
forall a b. (a -> b) -> URec Int a -> URec Int 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) -> URec Int a -> URec Int b
fmap :: forall a b. (a -> b) -> URec Int a -> URec Int b
$c<$ :: forall a b. a -> URec Int b -> URec Int a
<$ :: forall a b. a -> URec Int b -> URec Int a
Functor  
           , (forall x. URec Int p -> Rep (URec Int p) x)
-> (forall x. Rep (URec Int p) x -> URec Int p)
-> Generic (URec Int p)
forall x. Rep (URec Int p) x -> URec Int p
forall x. URec Int p -> Rep (URec Int p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. Rep (URec Int p) x -> URec Int p
forall k (p :: k) x. URec Int p -> Rep (URec Int p) x
$cfrom :: forall k (p :: k) x. URec Int p -> Rep (URec Int p) x
from :: forall x. URec Int p -> Rep (URec Int p) x
$cto :: forall k (p :: k) x. Rep (URec Int p) x -> URec Int p
to :: forall x. Rep (URec Int p) x -> URec Int p
Generic  
           , (forall (a :: k). URec Int a -> Rep1 (URec Int) a)
-> (forall (a :: k). Rep1 (URec Int) a -> URec Int a)
-> Generic1 (URec Int)
forall (a :: k). Rep1 (URec Int) a -> URec Int a
forall (a :: k). URec Int a -> Rep1 (URec Int) a
forall k (a :: k). Rep1 (URec Int) a -> URec Int a
forall k (a :: k). URec Int a -> Rep1 (URec Int) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). URec Int a -> Rep1 (URec Int) a
from1 :: forall (a :: k). URec Int a -> Rep1 (URec Int) a
$cto1 :: forall k (a :: k). Rep1 (URec Int) a -> URec Int a
to1 :: forall (a :: k). Rep1 (URec Int) a -> URec Int a
Generic1 
           )




data instance URec Word (p :: k) = UWord { forall k (p :: k). URec Word p -> Word#
uWord# :: Word# }
  deriving ( URec Word p -> URec Word p -> Bool
(URec Word p -> URec Word p -> Bool)
-> (URec Word p -> URec Word p -> Bool) -> Eq (URec Word p)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k (p :: k). URec Word p -> URec Word p -> Bool
$c== :: forall k (p :: k). URec Word p -> URec Word p -> Bool
== :: URec Word p -> URec Word p -> Bool
$c/= :: forall k (p :: k). URec Word p -> URec Word p -> Bool
/= :: URec Word p -> URec Word p -> Bool
Eq       
           , Eq (URec Word p) Eq (URec Word p) => (URec Word p -> URec Word p -> Ordering) -> (URec Word p -> URec Word p -> Bool) -> (URec Word p -> URec Word p -> Bool) -> (URec Word p -> URec Word p -> Bool) -> (URec Word p -> URec Word p -> Bool) -> (URec Word p -> URec Word p -> URec Word p) -> (URec Word p -> URec Word p -> URec Word p) -> Ord (URec Word p) URec Word p -> URec Word p -> Bool URec Word p -> URec Word p -> Ordering URec Word p -> URec Word p -> URec Word p 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 k (p :: k). Eq (URec Word p) forall k (p :: k). URec Word p -> URec Word p -> Bool forall k (p :: k). URec Word p -> URec Word p -> Ordering forall k (p :: k). URec Word p -> URec Word p -> URec Word p $ccompare :: forall k (p :: k). URec Word p -> URec Word p -> Ordering compare :: URec Word p -> URec Word p -> Ordering $c< :: forall k (p :: k). URec Word p -> URec Word p -> Bool < :: URec Word p -> URec Word p -> Bool $c<= :: forall k (p :: k). URec Word p -> URec Word p -> Bool <= :: URec Word p -> URec Word p -> Bool $c> :: forall k (p :: k). URec Word p -> URec Word p -> Bool > :: URec Word p -> URec Word p -> Bool $c>= :: forall k (p :: k). URec Word p -> URec Word p -> Bool >= :: URec Word p -> URec Word p -> Bool $cmax :: forall k (p :: k). URec Word p -> URec Word p -> URec Word p max :: URec Word p -> URec Word p -> URec Word p $cmin :: forall k (p :: k). URec Word p -> URec Word p -> URec Word p min :: URec Word p -> URec Word p -> URec Word p Ord      
           , Int -> URec Word p -> ShowS
[URec Word p] -> ShowS
URec Word p -> String
(Int -> URec Word p -> ShowS)
-> (URec Word p -> String)
-> ([URec Word p] -> ShowS)
-> Show (URec Word p)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k (p :: k). Int -> URec Word p -> ShowS
forall k (p :: k). [URec Word p] -> ShowS
forall k (p :: k). URec Word p -> String
$cshowsPrec :: forall k (p :: k). Int -> URec Word p -> ShowS
showsPrec :: Int -> URec Word p -> ShowS
$cshow :: forall k (p :: k). URec Word p -> String
show :: URec Word p -> String
$cshowList :: forall k (p :: k). [URec Word p] -> ShowS
showList :: [URec Word p] -> ShowS
Show     
           , (forall a b. (a -> b) -> URec Word a -> URec Word b)
-> (forall a b. a -> URec Word b -> URec Word a)
-> Functor (URec Word)
forall a b. a -> URec Word b -> URec Word a
forall a b. (a -> b) -> URec Word a -> URec Word 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) -> URec Word a -> URec Word b
fmap :: forall a b. (a -> b) -> URec Word a -> URec Word b
$c<$ :: forall a b. a -> URec Word b -> URec Word a
<$ :: forall a b. a -> URec Word b -> URec Word a
Functor  
           , (forall x. URec Word p -> Rep (URec Word p) x)
-> (forall x. Rep (URec Word p) x -> URec Word p)
-> Generic (URec Word p)
forall x. Rep (URec Word p) x -> URec Word p
forall x. URec Word p -> Rep (URec Word p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (p :: k) x. Rep (URec Word p) x -> URec Word p
forall k (p :: k) x. URec Word p -> Rep (URec Word p) x
$cfrom :: forall k (p :: k) x. URec Word p -> Rep (URec Word p) x
from :: forall x. URec Word p -> Rep (URec Word p) x
$cto :: forall k (p :: k) x. Rep (URec Word p) x -> URec Word p
to :: forall x. Rep (URec Word p) x -> URec Word p
Generic  
           , (forall (a :: k). URec Word a -> Rep1 (URec Word) a)
-> (forall (a :: k). Rep1 (URec Word) a -> URec Word a)
-> Generic1 (URec Word)
forall (a :: k). Rep1 (URec Word) a -> URec Word a
forall (a :: k). URec Word a -> Rep1 (URec Word) a
forall k (a :: k). Rep1 (URec Word) a -> URec Word a
forall k (a :: k). URec Word a -> Rep1 (URec Word) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cfrom1 :: forall k (a :: k). URec Word a -> Rep1 (URec Word) a
from1 :: forall (a :: k). URec Word a -> Rep1 (URec Word) a
$cto1 :: forall k (a :: k). Rep1 (URec Word) a -> URec Word a
to1 :: forall (a :: k). Rep1 (URec Word) a -> URec Word a
Generic1 
           )




type UAddr   = URec (Ptr ())



type UChar   = URec Char




type UDouble = URec Double




type UFloat  = URec Float




type UInt    = URec Int




type UWord   = URec Word


data R


type Rec0  = K1 R


data D

data C

data S


type D1 = M1 D


type C1 = M1 C


type S1 = M1 S


class Datatype d where
  
  datatypeName :: t d (f :: k -> Type) (a :: k) -> [Char]
  
  moduleName   :: t d (f :: k -> Type) (a :: k) -> [Char]
  
  
  
  packageName :: t d (f :: k -> Type) (a :: k) -> [Char]
  
  
  
  isNewtype    :: t d (f :: k -> Type) (a :: k) -> Bool
  isNewtype t d f a
_ = Bool
False


instance (KnownSymbol n, KnownSymbol m, KnownSymbol p, SingI nt)
    => Datatype ('MetaData n m p nt) where
  datatypeName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaData n m p nt) f a -> String
datatypeName t ('MetaData n m p nt) f a
_ = Proxy n -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy n
forall {k} (t :: k). Proxy t
Proxy :: Proxy n)
  moduleName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaData n m p nt) f a -> String
moduleName   t ('MetaData n m p nt) f a
_ = Proxy m -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy m
forall {k} (t :: k). Proxy t
Proxy :: Proxy m)
  packageName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaData n m p nt) f a -> String
packageName  t ('MetaData n m p nt) f a
_ = Proxy p -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy p
forall {k} (t :: k). Proxy t
Proxy :: Proxy p)
  isNewtype :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaData n m p nt) f a -> Bool
isNewtype    t ('MetaData n m p nt) f a
_ = Sing nt -> DemoteRep Bool
forall (a :: Bool). Sing a -> DemoteRep Bool
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
fromSing  (Sing nt
forall k (a :: k). SingI a => Sing a
sing  :: Sing nt)


class Constructor c where
  
  conName :: t c (f :: k -> Type) (a :: k) -> [Char]

  
  conFixity :: t c (f :: k -> Type) (a :: k) -> Fixity
  conFixity t c f a
_ = Fixity
Prefix

  
  conIsRecord :: t c (f :: k -> Type) (a :: k) -> Bool
  conIsRecord t c f a
_ = Bool
False


instance (KnownSymbol n, SingI f, SingI r)
    => Constructor ('MetaCons n f r) where
  conName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaCons n f r) f a -> String
conName     t ('MetaCons n f r) f a
_ = Proxy n -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy n
forall {k} (t :: k). Proxy t
Proxy :: Proxy n)
  conFixity :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaCons n f r) f a -> Fixity
conFixity   t ('MetaCons n f r) f a
_ = Sing f -> DemoteRep FixityI
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
forall (a :: FixityI). Sing a -> DemoteRep FixityI
fromSing  (Sing f
forall k (a :: k). SingI a => Sing a
sing  :: Sing f)
  conIsRecord :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaCons n f r) f a -> Bool
conIsRecord t ('MetaCons n f r) f a
_ = Sing r -> DemoteRep Bool
forall (a :: Bool). Sing a -> DemoteRep Bool
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
fromSing  (Sing r
forall k (a :: k). SingI a => Sing a
sing  :: Sing r)



data Fixity = Prefix | Infix Associativity Int
  deriving ( Fixity -> Fixity -> Bool
(Fixity -> Fixity -> Bool)
-> (Fixity -> Fixity -> Bool) -> Eq Fixity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Fixity -> Fixity -> Bool
== :: Fixity -> Fixity -> Bool
$c/= :: Fixity -> Fixity -> Bool
/= :: Fixity -> Fixity -> Bool
Eq       
           , Int -> Fixity -> ShowS
[Fixity] -> ShowS
Fixity -> String
(Int -> Fixity -> ShowS)
-> (Fixity -> String) -> ([Fixity] -> ShowS) -> Show Fixity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Fixity -> ShowS
showsPrec :: Int -> Fixity -> ShowS
$cshow :: Fixity -> String
show :: Fixity -> String
$cshowList :: [Fixity] -> ShowS
showList :: [Fixity] -> ShowS
Show     
           , Eq Fixity Eq Fixity => (Fixity -> Fixity -> Ordering) -> (Fixity -> Fixity -> Bool) -> (Fixity -> Fixity -> Bool) -> (Fixity -> Fixity -> Bool) -> (Fixity -> Fixity -> Bool) -> (Fixity -> Fixity -> Fixity) -> (Fixity -> Fixity -> Fixity) -> Ord Fixity Fixity -> Fixity -> Bool Fixity -> Fixity -> Ordering Fixity -> Fixity -> Fixity 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 :: Fixity -> Fixity -> Ordering compare :: Fixity -> Fixity -> Ordering $c< :: Fixity -> Fixity -> Bool < :: Fixity -> Fixity -> Bool $c<= :: Fixity -> Fixity -> Bool <= :: Fixity -> Fixity -> Bool $c> :: Fixity -> Fixity -> Bool > :: Fixity -> Fixity -> Bool $c>= :: Fixity -> Fixity -> Bool >= :: Fixity -> Fixity -> Bool $cmax :: Fixity -> Fixity -> Fixity max :: Fixity -> Fixity -> Fixity $cmin :: Fixity -> Fixity -> Fixity min :: Fixity -> Fixity -> Fixity Ord      
           , ReadPrec [Fixity] ReadPrec Fixity Int -> ReadS Fixity ReadS [Fixity] (Int -> ReadS Fixity) -> ReadS [Fixity] -> ReadPrec Fixity -> ReadPrec [Fixity] -> Read Fixity forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS Fixity readsPrec :: Int -> ReadS Fixity $creadList :: ReadS [Fixity] readList :: ReadS [Fixity] $creadPrec :: ReadPrec Fixity readPrec :: ReadPrec Fixity $creadListPrec :: ReadPrec [Fixity] readListPrec :: ReadPrec [Fixity] Read     
           , (forall x. Fixity -> Rep Fixity x)
-> (forall x. Rep Fixity x -> Fixity) -> Generic Fixity
forall x. Rep Fixity x -> Fixity
forall x. Fixity -> Rep Fixity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Fixity -> Rep Fixity x
from :: forall x. Fixity -> Rep Fixity x
$cto :: forall x. Rep Fixity x -> Fixity
to :: forall x. Rep Fixity x -> Fixity
Generic  
           )




data FixityI = PrefixI | InfixI Associativity Nat


prec :: Fixity -> Int
prec :: Fixity -> Int
prec Fixity
Prefix      = Int
10
prec (Infix Associativity
_ Int
n) = Int
n


data Associativity = LeftAssociative
                   | RightAssociative
                   | NotAssociative
  deriving ( Associativity -> Associativity -> Bool
(Associativity -> Associativity -> Bool)
-> (Associativity -> Associativity -> Bool) -> Eq Associativity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Associativity -> Associativity -> Bool
== :: Associativity -> Associativity -> Bool
$c/= :: Associativity -> Associativity -> Bool
/= :: Associativity -> Associativity -> Bool
Eq       
           , Int -> Associativity -> ShowS
[Associativity] -> ShowS
Associativity -> String
(Int -> Associativity -> ShowS)
-> (Associativity -> String)
-> ([Associativity] -> ShowS)
-> Show Associativity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Associativity -> ShowS
showsPrec :: Int -> Associativity -> ShowS
$cshow :: Associativity -> String
show :: Associativity -> String
$cshowList :: [Associativity] -> ShowS
showList :: [Associativity] -> ShowS
Show     
           , Eq Associativity Eq Associativity => (Associativity -> Associativity -> Ordering) -> (Associativity -> Associativity -> Bool) -> (Associativity -> Associativity -> Bool) -> (Associativity -> Associativity -> Bool) -> (Associativity -> Associativity -> Bool) -> (Associativity -> Associativity -> Associativity) -> (Associativity -> Associativity -> Associativity) -> Ord Associativity Associativity -> Associativity -> Bool Associativity -> Associativity -> Ordering Associativity -> Associativity -> Associativity 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 :: Associativity -> Associativity -> Ordering compare :: Associativity -> Associativity -> Ordering $c< :: Associativity -> Associativity -> Bool < :: Associativity -> Associativity -> Bool $c<= :: Associativity -> Associativity -> Bool <= :: Associativity -> Associativity -> Bool $c> :: Associativity -> Associativity -> Bool > :: Associativity -> Associativity -> Bool $c>= :: Associativity -> Associativity -> Bool >= :: Associativity -> Associativity -> Bool $cmax :: Associativity -> Associativity -> Associativity max :: Associativity -> Associativity -> Associativity $cmin :: Associativity -> Associativity -> Associativity min :: Associativity -> Associativity -> Associativity Ord      
           , ReadPrec [Associativity] ReadPrec Associativity Int -> ReadS Associativity ReadS [Associativity] (Int -> ReadS Associativity) -> ReadS [Associativity] -> ReadPrec Associativity -> ReadPrec [Associativity] -> Read Associativity forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS Associativity readsPrec :: Int -> ReadS Associativity $creadList :: ReadS [Associativity] readList :: ReadS [Associativity] $creadPrec :: ReadPrec Associativity readPrec :: ReadPrec Associativity $creadListPrec :: ReadPrec [Associativity] readListPrec :: ReadPrec [Associativity] Read     
           , Int -> Associativity Associativity -> Int Associativity -> [Associativity] Associativity -> Associativity Associativity -> Associativity -> [Associativity] Associativity -> Associativity -> Associativity -> [Associativity] (Associativity -> Associativity) -> (Associativity -> Associativity) -> (Int -> Associativity) -> (Associativity -> Int) -> (Associativity -> [Associativity]) -> (Associativity -> Associativity -> [Associativity]) -> (Associativity -> Associativity -> [Associativity]) -> (Associativity -> Associativity -> Associativity -> [Associativity]) -> Enum Associativity forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: Associativity -> Associativity succ :: Associativity -> Associativity $cpred :: Associativity -> Associativity pred :: Associativity -> Associativity $ctoEnum :: Int -> Associativity toEnum :: Int -> Associativity $cfromEnum :: Associativity -> Int fromEnum :: Associativity -> Int $cenumFrom :: Associativity -> [Associativity] enumFrom :: Associativity -> [Associativity] $cenumFromThen :: Associativity -> Associativity -> [Associativity] enumFromThen :: Associativity -> Associativity -> [Associativity] $cenumFromTo :: Associativity -> Associativity -> [Associativity] enumFromTo :: Associativity -> Associativity -> [Associativity] $cenumFromThenTo :: Associativity -> Associativity -> Associativity -> [Associativity] enumFromThenTo :: Associativity -> Associativity -> Associativity -> [Associativity] Enum     
           , Associativity
Associativity -> Associativity -> Bounded Associativity
forall a. a -> a -> Bounded a
$cminBound :: Associativity
minBound :: Associativity
$cmaxBound :: Associativity
maxBound :: Associativity
Bounded  
           , Ord Associativity Ord Associativity => ((Associativity, Associativity) -> [Associativity]) -> ((Associativity, Associativity) -> Associativity -> Int) -> ((Associativity, Associativity) -> Associativity -> Int) -> ((Associativity, Associativity) -> Associativity -> Bool) -> ((Associativity, Associativity) -> Int) -> ((Associativity, Associativity) -> Int) -> Ix Associativity (Associativity, Associativity) -> Int (Associativity, Associativity) -> [Associativity] (Associativity, Associativity) -> Associativity -> Bool (Associativity, Associativity) -> Associativity -> Int forall a. Ord a => ((a, a) -> [a]) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Bool) -> ((a, a) -> Int) -> ((a, a) -> Int) -> Ix a $crange :: (Associativity, Associativity) -> [Associativity] range :: (Associativity, Associativity) -> [Associativity] $cindex :: (Associativity, Associativity) -> Associativity -> Int index :: (Associativity, Associativity) -> Associativity -> Int $cunsafeIndex :: (Associativity, Associativity) -> Associativity -> Int unsafeIndex :: (Associativity, Associativity) -> Associativity -> Int $cinRange :: (Associativity, Associativity) -> Associativity -> Bool inRange :: (Associativity, Associativity) -> Associativity -> Bool $crangeSize :: (Associativity, Associativity) -> Int rangeSize :: (Associativity, Associativity) -> Int $cunsafeRangeSize :: (Associativity, Associativity) -> Int unsafeRangeSize :: (Associativity, Associativity) -> Int Ix       
           , (forall x. Associativity -> Rep Associativity x)
-> (forall x. Rep Associativity x -> Associativity)
-> Generic Associativity
forall x. Rep Associativity x -> Associativity
forall x. Associativity -> Rep Associativity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Associativity -> Rep Associativity x
from :: forall x. Associativity -> Rep Associativity x
$cto :: forall x. Rep Associativity x -> Associativity
to :: forall x. Rep Associativity x -> Associativity
Generic  
           )














data SourceUnpackedness = NoSourceUnpackedness
                        | SourceNoUnpack
                        | SourceUnpack
  deriving ( SourceUnpackedness -> SourceUnpackedness -> Bool
(SourceUnpackedness -> SourceUnpackedness -> Bool)
-> (SourceUnpackedness -> SourceUnpackedness -> Bool)
-> Eq SourceUnpackedness
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SourceUnpackedness -> SourceUnpackedness -> Bool
== :: SourceUnpackedness -> SourceUnpackedness -> Bool
$c/= :: SourceUnpackedness -> SourceUnpackedness -> Bool
/= :: SourceUnpackedness -> SourceUnpackedness -> Bool
Eq      
           , Int -> SourceUnpackedness -> ShowS
[SourceUnpackedness] -> ShowS
SourceUnpackedness -> String
(Int -> SourceUnpackedness -> ShowS)
-> (SourceUnpackedness -> String)
-> ([SourceUnpackedness] -> ShowS)
-> Show SourceUnpackedness
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SourceUnpackedness -> ShowS
showsPrec :: Int -> SourceUnpackedness -> ShowS
$cshow :: SourceUnpackedness -> String
show :: SourceUnpackedness -> String
$cshowList :: [SourceUnpackedness] -> ShowS
showList :: [SourceUnpackedness] -> ShowS
Show    
           , Eq SourceUnpackedness Eq SourceUnpackedness => (SourceUnpackedness -> SourceUnpackedness -> Ordering) -> (SourceUnpackedness -> SourceUnpackedness -> Bool) -> (SourceUnpackedness -> SourceUnpackedness -> Bool) -> (SourceUnpackedness -> SourceUnpackedness -> Bool) -> (SourceUnpackedness -> SourceUnpackedness -> Bool) -> (SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness) -> (SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness) -> Ord SourceUnpackedness SourceUnpackedness -> SourceUnpackedness -> Bool SourceUnpackedness -> SourceUnpackedness -> Ordering SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness 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 :: SourceUnpackedness -> SourceUnpackedness -> Ordering compare :: SourceUnpackedness -> SourceUnpackedness -> Ordering $c< :: SourceUnpackedness -> SourceUnpackedness -> Bool < :: SourceUnpackedness -> SourceUnpackedness -> Bool $c<= :: SourceUnpackedness -> SourceUnpackedness -> Bool <= :: SourceUnpackedness -> SourceUnpackedness -> Bool $c> :: SourceUnpackedness -> SourceUnpackedness -> Bool > :: SourceUnpackedness -> SourceUnpackedness -> Bool $c>= :: SourceUnpackedness -> SourceUnpackedness -> Bool >= :: SourceUnpackedness -> SourceUnpackedness -> Bool $cmax :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness max :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness $cmin :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness min :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness Ord     
           , ReadPrec [SourceUnpackedness] ReadPrec SourceUnpackedness Int -> ReadS SourceUnpackedness ReadS [SourceUnpackedness] (Int -> ReadS SourceUnpackedness) -> ReadS [SourceUnpackedness] -> ReadPrec SourceUnpackedness -> ReadPrec [SourceUnpackedness] -> Read SourceUnpackedness forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS SourceUnpackedness readsPrec :: Int -> ReadS SourceUnpackedness $creadList :: ReadS [SourceUnpackedness] readList :: ReadS [SourceUnpackedness] $creadPrec :: ReadPrec SourceUnpackedness readPrec :: ReadPrec SourceUnpackedness $creadListPrec :: ReadPrec [SourceUnpackedness] readListPrec :: ReadPrec [SourceUnpackedness] Read    
           , Int -> SourceUnpackedness SourceUnpackedness -> Int SourceUnpackedness -> [SourceUnpackedness] SourceUnpackedness -> SourceUnpackedness SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] (SourceUnpackedness -> SourceUnpackedness) -> (SourceUnpackedness -> SourceUnpackedness) -> (Int -> SourceUnpackedness) -> (SourceUnpackedness -> Int) -> (SourceUnpackedness -> [SourceUnpackedness]) -> (SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]) -> (SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]) -> (SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]) -> Enum SourceUnpackedness forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: SourceUnpackedness -> SourceUnpackedness succ :: SourceUnpackedness -> SourceUnpackedness $cpred :: SourceUnpackedness -> SourceUnpackedness pred :: SourceUnpackedness -> SourceUnpackedness $ctoEnum :: Int -> SourceUnpackedness toEnum :: Int -> SourceUnpackedness $cfromEnum :: SourceUnpackedness -> Int fromEnum :: SourceUnpackedness -> Int $cenumFrom :: SourceUnpackedness -> [SourceUnpackedness] enumFrom :: SourceUnpackedness -> [SourceUnpackedness] $cenumFromThen :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] enumFromThen :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] $cenumFromTo :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] enumFromTo :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] $cenumFromThenTo :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] enumFromThenTo :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness] Enum    
           , SourceUnpackedness
SourceUnpackedness
-> SourceUnpackedness -> Bounded SourceUnpackedness
forall a. a -> a -> Bounded a
$cminBound :: SourceUnpackedness
minBound :: SourceUnpackedness
$cmaxBound :: SourceUnpackedness
maxBound :: SourceUnpackedness
Bounded 
           , Ord SourceUnpackedness Ord SourceUnpackedness => ((SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness]) -> ((SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int) -> ((SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int) -> ((SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool) -> ((SourceUnpackedness, SourceUnpackedness) -> Int) -> ((SourceUnpackedness, SourceUnpackedness) -> Int) -> Ix SourceUnpackedness (SourceUnpackedness, SourceUnpackedness) -> Int (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int forall a. Ord a => ((a, a) -> [a]) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Bool) -> ((a, a) -> Int) -> ((a, a) -> Int) -> Ix a $crange :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] range :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] $cindex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int index :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int $cunsafeIndex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int unsafeIndex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int $cinRange :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool inRange :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool $crangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int rangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int $cunsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int unsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Ix      
           , (forall x. SourceUnpackedness -> Rep SourceUnpackedness x)
-> (forall x. Rep SourceUnpackedness x -> SourceUnpackedness)
-> Generic SourceUnpackedness
forall x. Rep SourceUnpackedness x -> SourceUnpackedness
forall x. SourceUnpackedness -> Rep SourceUnpackedness x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SourceUnpackedness -> Rep SourceUnpackedness x
from :: forall x. SourceUnpackedness -> Rep SourceUnpackedness x
$cto :: forall x. Rep SourceUnpackedness x -> SourceUnpackedness
to :: forall x. Rep SourceUnpackedness x -> SourceUnpackedness
Generic 
           )












data SourceStrictness = NoSourceStrictness
                      | SourceLazy
                      | SourceStrict
  deriving ( SourceStrictness -> SourceStrictness -> Bool
(SourceStrictness -> SourceStrictness -> Bool)
-> (SourceStrictness -> SourceStrictness -> Bool)
-> Eq SourceStrictness
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SourceStrictness -> SourceStrictness -> Bool
== :: SourceStrictness -> SourceStrictness -> Bool
$c/= :: SourceStrictness -> SourceStrictness -> Bool
/= :: SourceStrictness -> SourceStrictness -> Bool
Eq      
           , Int -> SourceStrictness -> ShowS
[SourceStrictness] -> ShowS
SourceStrictness -> String
(Int -> SourceStrictness -> ShowS)
-> (SourceStrictness -> String)
-> ([SourceStrictness] -> ShowS)
-> Show SourceStrictness
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SourceStrictness -> ShowS
showsPrec :: Int -> SourceStrictness -> ShowS
$cshow :: SourceStrictness -> String
show :: SourceStrictness -> String
$cshowList :: [SourceStrictness] -> ShowS
showList :: [SourceStrictness] -> ShowS
Show    
           , Eq SourceStrictness Eq SourceStrictness => (SourceStrictness -> SourceStrictness -> Ordering) -> (SourceStrictness -> SourceStrictness -> Bool) -> (SourceStrictness -> SourceStrictness -> Bool) -> (SourceStrictness -> SourceStrictness -> Bool) -> (SourceStrictness -> SourceStrictness -> Bool) -> (SourceStrictness -> SourceStrictness -> SourceStrictness) -> (SourceStrictness -> SourceStrictness -> SourceStrictness) -> Ord SourceStrictness SourceStrictness -> SourceStrictness -> Bool SourceStrictness -> SourceStrictness -> Ordering SourceStrictness -> SourceStrictness -> SourceStrictness 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 :: SourceStrictness -> SourceStrictness -> Ordering compare :: SourceStrictness -> SourceStrictness -> Ordering $c< :: SourceStrictness -> SourceStrictness -> Bool < :: SourceStrictness -> SourceStrictness -> Bool $c<= :: SourceStrictness -> SourceStrictness -> Bool <= :: SourceStrictness -> SourceStrictness -> Bool $c> :: SourceStrictness -> SourceStrictness -> Bool > :: SourceStrictness -> SourceStrictness -> Bool $c>= :: SourceStrictness -> SourceStrictness -> Bool >= :: SourceStrictness -> SourceStrictness -> Bool $cmax :: SourceStrictness -> SourceStrictness -> SourceStrictness max :: SourceStrictness -> SourceStrictness -> SourceStrictness $cmin :: SourceStrictness -> SourceStrictness -> SourceStrictness min :: SourceStrictness -> SourceStrictness -> SourceStrictness Ord     
           , ReadPrec [SourceStrictness] ReadPrec SourceStrictness Int -> ReadS SourceStrictness ReadS [SourceStrictness] (Int -> ReadS SourceStrictness) -> ReadS [SourceStrictness] -> ReadPrec SourceStrictness -> ReadPrec [SourceStrictness] -> Read SourceStrictness forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS SourceStrictness readsPrec :: Int -> ReadS SourceStrictness $creadList :: ReadS [SourceStrictness] readList :: ReadS [SourceStrictness] $creadPrec :: ReadPrec SourceStrictness readPrec :: ReadPrec SourceStrictness $creadListPrec :: ReadPrec [SourceStrictness] readListPrec :: ReadPrec [SourceStrictness] Read    
           , Int -> SourceStrictness SourceStrictness -> Int SourceStrictness -> [SourceStrictness] SourceStrictness -> SourceStrictness SourceStrictness -> SourceStrictness -> [SourceStrictness] SourceStrictness -> SourceStrictness -> SourceStrictness -> [SourceStrictness] (SourceStrictness -> SourceStrictness) -> (SourceStrictness -> SourceStrictness) -> (Int -> SourceStrictness) -> (SourceStrictness -> Int) -> (SourceStrictness -> [SourceStrictness]) -> (SourceStrictness -> SourceStrictness -> [SourceStrictness]) -> (SourceStrictness -> SourceStrictness -> [SourceStrictness]) -> (SourceStrictness -> SourceStrictness -> SourceStrictness -> [SourceStrictness]) -> Enum SourceStrictness forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: SourceStrictness -> SourceStrictness succ :: SourceStrictness -> SourceStrictness $cpred :: SourceStrictness -> SourceStrictness pred :: SourceStrictness -> SourceStrictness $ctoEnum :: Int -> SourceStrictness toEnum :: Int -> SourceStrictness $cfromEnum :: SourceStrictness -> Int fromEnum :: SourceStrictness -> Int $cenumFrom :: SourceStrictness -> [SourceStrictness] enumFrom :: SourceStrictness -> [SourceStrictness] $cenumFromThen :: SourceStrictness -> SourceStrictness -> [SourceStrictness] enumFromThen :: SourceStrictness -> SourceStrictness -> [SourceStrictness] $cenumFromTo :: SourceStrictness -> SourceStrictness -> [SourceStrictness] enumFromTo :: SourceStrictness -> SourceStrictness -> [SourceStrictness] $cenumFromThenTo :: SourceStrictness -> SourceStrictness -> SourceStrictness -> [SourceStrictness] enumFromThenTo :: SourceStrictness -> SourceStrictness -> SourceStrictness -> [SourceStrictness] Enum    
           , SourceStrictness
SourceStrictness -> SourceStrictness -> Bounded SourceStrictness
forall a. a -> a -> Bounded a
$cminBound :: SourceStrictness
minBound :: SourceStrictness
$cmaxBound :: SourceStrictness
maxBound :: SourceStrictness
Bounded 
           , Ord SourceStrictness Ord SourceStrictness => ((SourceStrictness, SourceStrictness) -> [SourceStrictness]) -> ((SourceStrictness, SourceStrictness) -> SourceStrictness -> Int) -> ((SourceStrictness, SourceStrictness) -> SourceStrictness -> Int) -> ((SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool) -> ((SourceStrictness, SourceStrictness) -> Int) -> ((SourceStrictness, SourceStrictness) -> Int) -> Ix SourceStrictness (SourceStrictness, SourceStrictness) -> Int (SourceStrictness, SourceStrictness) -> [SourceStrictness] (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int forall a. Ord a => ((a, a) -> [a]) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Bool) -> ((a, a) -> Int) -> ((a, a) -> Int) -> Ix a $crange :: (SourceStrictness, SourceStrictness) -> [SourceStrictness] range :: (SourceStrictness, SourceStrictness) -> [SourceStrictness] $cindex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int index :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int $cunsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int unsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int $cinRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool inRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool $crangeSize :: (SourceStrictness, SourceStrictness) -> Int rangeSize :: (SourceStrictness, SourceStrictness) -> Int $cunsafeRangeSize :: (SourceStrictness, SourceStrictness) -> Int unsafeRangeSize :: (SourceStrictness, SourceStrictness) -> Int Ix      
           , (forall x. SourceStrictness -> Rep SourceStrictness x)
-> (forall x. Rep SourceStrictness x -> SourceStrictness)
-> Generic SourceStrictness
forall x. Rep SourceStrictness x -> SourceStrictness
forall x. SourceStrictness -> Rep SourceStrictness x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SourceStrictness -> Rep SourceStrictness x
from :: forall x. SourceStrictness -> Rep SourceStrictness x
$cto :: forall x. Rep SourceStrictness x -> SourceStrictness
to :: forall x. Rep SourceStrictness x -> SourceStrictness
Generic 
           )























data DecidedStrictness = DecidedLazy
                       | DecidedStrict
                       | DecidedUnpack
  deriving ( DecidedStrictness -> DecidedStrictness -> Bool
(DecidedStrictness -> DecidedStrictness -> Bool)
-> (DecidedStrictness -> DecidedStrictness -> Bool)
-> Eq DecidedStrictness
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DecidedStrictness -> DecidedStrictness -> Bool
== :: DecidedStrictness -> DecidedStrictness -> Bool
$c/= :: DecidedStrictness -> DecidedStrictness -> Bool
/= :: DecidedStrictness -> DecidedStrictness -> Bool
Eq      
           , Int -> DecidedStrictness -> ShowS
[DecidedStrictness] -> ShowS
DecidedStrictness -> String
(Int -> DecidedStrictness -> ShowS)
-> (DecidedStrictness -> String)
-> ([DecidedStrictness] -> ShowS)
-> Show DecidedStrictness
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DecidedStrictness -> ShowS
showsPrec :: Int -> DecidedStrictness -> ShowS
$cshow :: DecidedStrictness -> String
show :: DecidedStrictness -> String
$cshowList :: [DecidedStrictness] -> ShowS
showList :: [DecidedStrictness] -> ShowS
Show    
           , Eq DecidedStrictness Eq DecidedStrictness => (DecidedStrictness -> DecidedStrictness -> Ordering) -> (DecidedStrictness -> DecidedStrictness -> Bool) -> (DecidedStrictness -> DecidedStrictness -> Bool) -> (DecidedStrictness -> DecidedStrictness -> Bool) -> (DecidedStrictness -> DecidedStrictness -> Bool) -> (DecidedStrictness -> DecidedStrictness -> DecidedStrictness) -> (DecidedStrictness -> DecidedStrictness -> DecidedStrictness) -> Ord DecidedStrictness DecidedStrictness -> DecidedStrictness -> Bool DecidedStrictness -> DecidedStrictness -> Ordering DecidedStrictness -> DecidedStrictness -> DecidedStrictness 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 :: DecidedStrictness -> DecidedStrictness -> Ordering compare :: DecidedStrictness -> DecidedStrictness -> Ordering $c< :: DecidedStrictness -> DecidedStrictness -> Bool < :: DecidedStrictness -> DecidedStrictness -> Bool $c<= :: DecidedStrictness -> DecidedStrictness -> Bool <= :: DecidedStrictness -> DecidedStrictness -> Bool $c> :: DecidedStrictness -> DecidedStrictness -> Bool > :: DecidedStrictness -> DecidedStrictness -> Bool $c>= :: DecidedStrictness -> DecidedStrictness -> Bool >= :: DecidedStrictness -> DecidedStrictness -> Bool $cmax :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness max :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness $cmin :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness min :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness Ord     
           , ReadPrec [DecidedStrictness] ReadPrec DecidedStrictness Int -> ReadS DecidedStrictness ReadS [DecidedStrictness] (Int -> ReadS DecidedStrictness) -> ReadS [DecidedStrictness] -> ReadPrec DecidedStrictness -> ReadPrec [DecidedStrictness] -> Read DecidedStrictness forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS DecidedStrictness readsPrec :: Int -> ReadS DecidedStrictness $creadList :: ReadS [DecidedStrictness] readList :: ReadS [DecidedStrictness] $creadPrec :: ReadPrec DecidedStrictness readPrec :: ReadPrec DecidedStrictness $creadListPrec :: ReadPrec [DecidedStrictness] readListPrec :: ReadPrec [DecidedStrictness] Read    
           , Int -> DecidedStrictness DecidedStrictness -> Int DecidedStrictness -> [DecidedStrictness] DecidedStrictness -> DecidedStrictness DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] DecidedStrictness -> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] (DecidedStrictness -> DecidedStrictness) -> (DecidedStrictness -> DecidedStrictness) -> (Int -> DecidedStrictness) -> (DecidedStrictness -> Int) -> (DecidedStrictness -> [DecidedStrictness]) -> (DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]) -> (DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]) -> (DecidedStrictness -> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]) -> Enum DecidedStrictness forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: DecidedStrictness -> DecidedStrictness succ :: DecidedStrictness -> DecidedStrictness $cpred :: DecidedStrictness -> DecidedStrictness pred :: DecidedStrictness -> DecidedStrictness $ctoEnum :: Int -> DecidedStrictness toEnum :: Int -> DecidedStrictness $cfromEnum :: DecidedStrictness -> Int fromEnum :: DecidedStrictness -> Int $cenumFrom :: DecidedStrictness -> [DecidedStrictness] enumFrom :: DecidedStrictness -> [DecidedStrictness] $cenumFromThen :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] enumFromThen :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] $cenumFromTo :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] enumFromTo :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] $cenumFromThenTo :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] enumFromThenTo :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] Enum    
           , DecidedStrictness
DecidedStrictness -> DecidedStrictness -> Bounded DecidedStrictness
forall a. a -> a -> Bounded a
$cminBound :: DecidedStrictness
minBound :: DecidedStrictness
$cmaxBound :: DecidedStrictness
maxBound :: DecidedStrictness
Bounded 
           , Ord DecidedStrictness Ord DecidedStrictness => ((DecidedStrictness, DecidedStrictness) -> [DecidedStrictness]) -> ((DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int) -> ((DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int) -> ((DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool) -> ((DecidedStrictness, DecidedStrictness) -> Int) -> ((DecidedStrictness, DecidedStrictness) -> Int) -> Ix DecidedStrictness (DecidedStrictness, DecidedStrictness) -> Int (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness] (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int forall a. Ord a => ((a, a) -> [a]) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Int) -> ((a, a) -> a -> Bool) -> ((a, a) -> Int) -> ((a, a) -> Int) -> Ix a $crange :: (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness] range :: (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness] $cindex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int index :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int $cunsafeIndex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int unsafeIndex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int $cinRange :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool inRange :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool $crangeSize :: (DecidedStrictness, DecidedStrictness) -> Int rangeSize :: (DecidedStrictness, DecidedStrictness) -> Int $cunsafeRangeSize :: (DecidedStrictness, DecidedStrictness) -> Int unsafeRangeSize :: (DecidedStrictness, DecidedStrictness) -> Int Ix      
           , (forall x. DecidedStrictness -> Rep DecidedStrictness x)
-> (forall x. Rep DecidedStrictness x -> DecidedStrictness)
-> Generic DecidedStrictness
forall x. Rep DecidedStrictness x -> DecidedStrictness
forall x. DecidedStrictness -> Rep DecidedStrictness x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DecidedStrictness -> Rep DecidedStrictness x
from :: forall x. DecidedStrictness -> Rep DecidedStrictness x
$cto :: forall x. Rep DecidedStrictness x -> DecidedStrictness
to :: forall x. Rep DecidedStrictness x -> DecidedStrictness
Generic 
           )


class Selector s where
  
  selName :: t s (f :: k -> Type) (a :: k) -> [Char]
  
  
  
  selSourceUnpackedness :: t s (f :: k -> Type) (a :: k) -> SourceUnpackedness
  
  
  
  selSourceStrictness :: t s (f :: k -> Type) (a :: k) -> SourceStrictness
  
  
  
  selDecidedStrictness :: t s (f :: k -> Type) (a :: k) -> DecidedStrictness


instance (SingI mn, SingI su, SingI ss, SingI ds)
    => Selector ('MetaSel mn su ss ds) where
  selName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaSel mn su ss ds) f a -> String
selName t ('MetaSel mn su ss ds) f a
_ = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe String
"" (Sing mn -> DemoteRep (Maybe Symbol)
forall (a :: Maybe Symbol). Sing a -> DemoteRep (Maybe Symbol)
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
fromSing (Sing mn
forall k (a :: k). SingI a => Sing a
sing :: Sing mn))
  selSourceUnpackedness :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaSel mn su ss ds) f a -> SourceUnpackedness
selSourceUnpackedness t ('MetaSel mn su ss ds) f a
_ = Sing su -> DemoteRep SourceUnpackedness
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
forall (a :: SourceUnpackedness).
Sing a -> DemoteRep SourceUnpackedness
fromSing (Sing su
forall k (a :: k). SingI a => Sing a
sing :: Sing su)
  selSourceStrictness :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaSel mn su ss ds) f a -> SourceStrictness
selSourceStrictness   t ('MetaSel mn su ss ds) f a
_ = Sing ss -> DemoteRep SourceStrictness
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
forall (a :: SourceStrictness).
Sing a -> DemoteRep SourceStrictness
fromSing (Sing ss
forall k (a :: k). SingI a => Sing a
sing :: Sing ss)
  selDecidedStrictness :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).
t ('MetaSel mn su ss ds) f a -> DecidedStrictness
selDecidedStrictness  t ('MetaSel mn su ss ds) f a
_ = Sing ds -> DemoteRep DecidedStrictness
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
forall (a :: DecidedStrictness).
Sing a -> DemoteRep DecidedStrictness
fromSing (Sing ds
forall k (a :: k). SingI a => Sing a
sing :: Sing ds)










class Generic a where
  
  type Rep a :: Type -> Type
  
  from  :: a -> (Rep a) x
  
  to    :: (Rep a) x -> a












class Generic1 (f :: k -> Type) where
  
  type Rep1 f :: k -> Type
  
  from1  :: f a -> (Rep1 f) a
  
  to1    :: (Rep1 f) a -> f a















































newtype Generically a = Generically a


instance (Generic a, Semigroup (Rep a ())) => Semigroup (Generically a) where
  (<>) :: Generically a -> Generically a -> Generically a
  Generically a
a <> :: Generically a -> Generically a -> Generically a
<> Generically a
b = a -> Generically a
forall a. a -> Generically a
Generically (Rep a () -> a
forall a x. Generic a => Rep a x -> a
forall x. Rep a x -> a
to (a -> Rep a ()
forall x. a -> Rep a x
forall a x. Generic a => a -> Rep a x
from a
a Rep a () -> Rep a () -> Rep a ()
forall a. Semigroup a => a -> a -> a
<> a -> Rep a ()
forall x. a -> Rep a x
forall a x. Generic a => a -> Rep a x
from a
b :: Rep a ()))


instance (Generic a, Monoid (Rep a ())) => Monoid (Generically a) where
  mempty :: Generically a
  mempty :: Generically a
mempty = a -> Generically a
forall a. a -> Generically a
Generically (Rep a () -> a
forall a x. Generic a => Rep a x -> a
forall x. Rep a x -> a
to (Rep a ()
forall a. Monoid a => a
mempty :: Rep a ()))

  mappend :: Generically a -> Generically a -> Generically a
  mappend :: Generically a -> Generically a -> Generically a
mappend = Generically a -> Generically a -> Generically a
forall a. Semigroup a => a -> a -> a
(<>)










































type    Generically1 :: forall k. (k -> Type) -> (k -> Type)
newtype Generically1 f a where
  Generically1 :: forall {k} f a. f a -> Generically1 @k f a


instance (Generic1 f, Eq (Rep1 f a)) => Eq (Generically1 f a) where
   Generically1 f a
x == :: Generically1 f a -> Generically1 f a -> Bool
== Generically1 f a
y = f a -> Rep1 f a
forall (a :: k). f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
x Rep1 f a -> Rep1 f a -> Bool
forall a. Eq a => a -> a -> Bool
== f a -> Rep1 f a
forall (a :: k). f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
y
   Generically1 f a
x /= :: Generically1 f a -> Generically1 f a -> Bool
/= Generically1 f a
y = f a -> Rep1 f a
forall (a :: k). f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
x Rep1 f a -> Rep1 f a -> Bool
forall a. Eq a => a -> a -> Bool
/= f a -> Rep1 f a
forall (a :: k). f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
y


instance (Generic1 f, Ord (Rep1 f a)) => Ord (Generically1 f a) where
   Generically1 f a
x compare :: Generically1 f a -> Generically1 f a -> Ordering
`compare` Generically1 f a
y = f a -> Rep1 f a
forall (a :: k). f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
x Rep1 f a -> Rep1 f a -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` f a -> Rep1 f a
forall (a :: k). f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
y


instance (Generic1 f, Functor (Rep1 f)) => Functor (Generically1 f) where
  fmap :: (a -> a') -> (Generically1 f a -> Generically1 f a')
  fmap :: forall a b. (a -> b) -> Generically1 f a -> Generically1 f b
fmap a -> a'
f (Generically1 f a
as) = f a' -> Generically1 f a'
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a' -> f a'
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 ((a -> a') -> Rep1 f a -> Rep1 f a'
forall a b. (a -> b) -> Rep1 f a -> Rep1 f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a'
f (f a -> Rep1 f a
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
as)))

  (<$) :: a -> Generically1 f b -> Generically1 f a
  a
a <$ :: forall a b. a -> Generically1 f b -> Generically1 f a
<$ Generically1 f b
as = f a -> Generically1 f a
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a -> f a
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 (a
a a -> Rep1 f b -> Rep1 f a
forall a b. a -> Rep1 f b -> Rep1 f a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ f b -> Rep1 f b
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f b
as))


instance (Generic1 f, Applicative (Rep1 f)) => Applicative (Generically1 f) where
  pure :: a -> Generically1 f a
  pure :: forall a. a -> Generically1 f a
pure a
a = f a -> Generically1 f a
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a -> f a
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 (a -> Rep1 f a
forall a. a -> Rep1 f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
a))

  (<*>) :: Generically1 f (a1 -> a2) -> Generically1 f a1 -> Generically1 f a2
  Generically1 f (a1 -> a2)
fs <*> :: forall a b.
Generically1 f (a -> b) -> Generically1 f a -> Generically1 f b
<*> Generically1 f a1
as = f a2 -> Generically1 f a2
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a2 -> f a2
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 (f (a1 -> a2) -> Rep1 f (a1 -> a2)
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f (a1 -> a2)
fs Rep1 f (a1 -> a2) -> Rep1 f a1 -> Rep1 f a2
forall a b. Rep1 f (a -> b) -> Rep1 f a -> Rep1 f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a1 -> Rep1 f a1
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a1
as))

  liftA2 :: (a1 -> a2 -> a3)
         -> (Generically1 f a1 -> Generically1 f a2 -> Generically1 f a3)
  liftA2 :: forall a b c.
(a -> b -> c)
-> Generically1 f a -> Generically1 f b -> Generically1 f c
liftA2 a1 -> a2 -> a3
(·) (Generically1 f a1
as) (Generically1 f a2
bs) = f a3 -> Generically1 f a3
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a3 -> f a3
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 ((a1 -> a2 -> a3) -> Rep1 f a1 -> Rep1 f a2 -> Rep1 f a3
forall a b c. (a -> b -> c) -> Rep1 f a -> Rep1 f b -> Rep1 f c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a1 -> a2 -> a3
(·) (f a1 -> Rep1 f a1
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a1
as) (f a2 -> Rep1 f a2
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a2
bs)))


instance (Generic1 f, Alternative (Rep1 f)) => Alternative (Generically1 f) where
  empty :: Generically1 f a
  empty :: forall a. Generically1 f a
empty = f a -> Generically1 f a
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a -> f a
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 Rep1 f a
forall a. Rep1 f a
forall (f :: * -> *) a. Alternative f => f a
empty)

  (<|>) :: Generically1 f a -> Generically1 f a -> Generically1 f a
  Generically1 f a
as1 <|> :: forall a. Generically1 f a -> Generically1 f a -> Generically1 f a
<|> Generically1 f a
as2 = f a -> Generically1 f a
forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f a
Generically1
    (Rep1 f a -> f a
forall a. Rep1 f a -> f a
forall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f a
to1 (f a -> Rep1 f a
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
as1 Rep1 f a -> Rep1 f a -> Rep1 f a
forall a. Rep1 f a -> Rep1 f a -> Rep1 f a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> f a -> Rep1 f a
forall a. f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1 f a
as2))





















data Meta = MetaData Symbol Symbol Symbol Bool
          | MetaCons Symbol FixityI Bool
          | MetaSel  (Maybe Symbol)
                     SourceUnpackedness SourceStrictness DecidedStrictness






deriving instance Generic Void


deriving instance Generic [a]


deriving instance Generic (NonEmpty a)


deriving instance Generic (Maybe a)


deriving instance Generic (Either a b)


deriving instance Generic Bool


deriving instance Generic Ordering


deriving instance Generic (Proxy t)


deriving instance Generic ()


deriving instance Generic (Solo a)


deriving instance Generic ((,) a b)


deriving instance Generic ((,,) a b c)


deriving instance Generic ((,,,) a b c d)


deriving instance Generic ((,,,,) a b c d e)


deriving instance Generic ((,,,,,) a b c d e f)


deriving instance Generic ((,,,,,,) a b c d e f g)


deriving instance Generic ((,,,,,,,) a b c d e f g h)


deriving instance Generic ((,,,,,,,,) a b c d e f g h i)


deriving instance Generic ((,,,,,,,,,) a b c d e f g h i j)


deriving instance Generic ((,,,,,,,,,,) a b c d e f g h i j k)


deriving instance Generic ((,,,,,,,,,,,) a b c d e f g h i j k l)


deriving instance Generic ((,,,,,,,,,,,,) a b c d e f g h i j k l m)


deriving instance Generic ((,,,,,,,,,,,,,) a b c d e f g h i j k l m n)


deriving instance Generic ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o)


deriving instance Generic (Down a)


deriving instance Generic SrcLoc


deriving instance Generic GeneralCategory


deriving instance Generic Fingerprint


deriving instance Generic1 []


deriving instance Generic1 NonEmpty


deriving instance Generic1 Maybe


deriving instance Generic1 (Either a)


deriving instance Generic1 Proxy


deriving instance Generic1 Solo


deriving instance Generic1 ((,) a)


deriving instance Generic1 ((,,) a b)


deriving instance Generic1 ((,,,) a b c)


deriving instance Generic1 ((,,,,) a b c d)


deriving instance Generic1 ((,,,,,) a b c d e)


deriving instance Generic1 ((,,,,,,) a b c d e f)


deriving instance Generic1 ((,,,,,,,) a b c d e f g)


deriving instance Generic1 ((,,,,,,,,) a b c d e f g h)


deriving instance Generic1 ((,,,,,,,,,) a b c d e f g h i)


deriving instance Generic1 ((,,,,,,,,,,) a b c d e f g h i j)


deriving instance Generic1 ((,,,,,,,,,,,) a b c d e f g h i j k)


deriving instance Generic1 ((,,,,,,,,,,,,) a b c d e f g h i j k l)


deriving instance Generic1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m)


deriving instance Generic1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n)


deriving instance Generic1 Down






data family Sing (a :: k)


class SingI (a :: k) where
  
  
  sing :: Sing a




class SingKind k where
  
  
  type DemoteRep k :: Type

  
  fromSing :: Sing (a :: k) -> DemoteRep k


data instance Sing (s :: Symbol) where
  SSym :: KnownSymbol s => Sing s


instance KnownSymbol a => SingI a where sing :: Sing a
sing = Sing a
forall (a :: Symbol). KnownSymbol a => Sing a
SSym


instance SingKind Symbol where
  type DemoteRep Symbol = String
  fromSing :: forall (a :: Symbol). Sing a -> DemoteRep Symbol
fromSing (Sing a
R:SingSymbols a
SSym :: Sing s) = Proxy a -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy a
forall {k} (t :: k). Proxy t
Proxy :: Proxy s)


data instance Sing (a :: Bool) where
  STrue  :: Sing 'True
  SFalse :: Sing 'False


instance SingI 'True  where sing :: Sing 'True
sing = Sing 'True
STrue


instance SingI 'False where sing :: Sing 'False
sing = Sing 'False
SFalse


instance SingKind Bool where
  type DemoteRep Bool = Bool
  fromSing :: forall (a :: Bool). Sing a -> DemoteRep Bool
fromSing Sing a
R:SingBoola a
STrue  = Bool
DemoteRep Bool
True
  fromSing Sing a
R:SingBoola a
SFalse = Bool
DemoteRep Bool
False


data instance Sing (b :: Maybe a) where
  SNothing :: Sing 'Nothing
  SJust    :: Sing a -> Sing ('Just a)


instance            SingI 'Nothing  where sing :: Sing 'Nothing
sing = Sing 'Nothing
forall a. Sing 'Nothing
SNothing


instance SingI a => SingI ('Just a) where sing :: Sing ('Just a)
sing = Sing a -> Sing ('Just a)
forall {k} (a :: k). Sing a -> Sing ('Just a)
SJust Sing a
forall k (a :: k). SingI a => Sing a
sing


instance SingKind a => SingKind (Maybe a) where
  type DemoteRep (Maybe a) = Maybe (DemoteRep a)
  fromSing :: forall (a :: Maybe a). Sing a -> DemoteRep (Maybe a)
fromSing Sing a
R:SingMaybeb a a
SNothing  = Maybe (DemoteRep a)
DemoteRep (Maybe a)
forall a. Maybe a
Nothing
  fromSing (SJust Sing a
a) = DemoteRep a -> Maybe (DemoteRep a)
forall a. a -> Maybe a
Just (Sing a -> DemoteRep a
forall (a :: a). Sing a -> DemoteRep a
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
fromSing Sing a
a)


data instance Sing (a :: FixityI) where
  SPrefix :: Sing 'PrefixI
  SInfix  :: Sing a -> Integer -> Sing ('InfixI a n)


instance SingI 'PrefixI where sing :: Sing 'PrefixI
sing = Sing 'PrefixI
SPrefix


instance (SingI a, KnownNat n) => SingI ('InfixI a n) where
  sing :: Sing ('InfixI a n)
sing = Sing a -> Integer -> Sing ('InfixI a n)
forall (a :: Associativity) (n :: Nat).
Sing a -> Integer -> Sing ('InfixI a n)
SInfix (Sing a
forall k (a :: k). SingI a => Sing a
sing :: Sing a) (Proxy n -> Integer
forall (n :: Nat) (proxy :: Nat -> *).
KnownNat n =>
proxy n -> Integer
natVal (Proxy n
forall {k} (t :: k). Proxy t
Proxy :: Proxy n))


instance SingKind FixityI where
  type DemoteRep FixityI = Fixity
  fromSing :: forall (a :: FixityI). Sing a -> DemoteRep FixityI
fromSing Sing a
R:SingFixityIa a
SPrefix      = DemoteRep FixityI
Fixity
Prefix
  fromSing (SInfix Sing a
a Integer
n) = Associativity -> Int -> Fixity
Infix (Sing a -> DemoteRep Associativity
forall k (a :: k). SingKind k => Sing a -> DemoteRep k
forall (a :: Associativity). Sing a -> DemoteRep Associativity
fromSing Sing a
a) (Integer -> Int
integerToInt Integer
n)


data instance Sing (a :: Associativity) where
  SLeftAssociative  :: Sing 'LeftAssociative
  SRightAssociative :: Sing 'RightAssociative
  SNotAssociative   :: Sing 'NotAssociative


instance SingI 'LeftAssociative  where sing :: Sing 'LeftAssociative
sing = Sing 'LeftAssociative
SLeftAssociative


instance SingI 'RightAssociative where sing :: Sing 'RightAssociative
sing = Sing 'RightAssociative
SRightAssociative


instance SingI 'NotAssociative   where sing :: Sing 'NotAssociative
sing = Sing 'NotAssociative
SNotAssociative


instance SingKind Associativity where
  type DemoteRep Associativity = Associativity
  fromSing :: forall (a :: Associativity). Sing a -> DemoteRep Associativity
fromSing Sing a
R:SingAssociativitya a
SLeftAssociative  = DemoteRep Associativity
Associativity
LeftAssociative
  fromSing Sing a
R:SingAssociativitya a
SRightAssociative = DemoteRep Associativity
Associativity
RightAssociative
  fromSing Sing a
R:SingAssociativitya a
SNotAssociative   = DemoteRep Associativity
Associativity
NotAssociative


data instance Sing (a :: SourceUnpackedness) where
  SNoSourceUnpackedness :: Sing 'NoSourceUnpackedness
  SSourceNoUnpack       :: Sing 'SourceNoUnpack
  SSourceUnpack         :: Sing 'SourceUnpack


instance SingI 'NoSourceUnpackedness where sing :: Sing 'NoSourceUnpackedness
sing = Sing 'NoSourceUnpackedness
SNoSourceUnpackedness


instance SingI 'SourceNoUnpack       where sing :: Sing 'SourceNoUnpack
sing = Sing 'SourceNoUnpack
SSourceNoUnpack


instance SingI 'SourceUnpack         where sing :: Sing 'SourceUnpack
sing = Sing 'SourceUnpack
SSourceUnpack


instance SingKind SourceUnpackedness where
  type DemoteRep SourceUnpackedness = SourceUnpackedness
  fromSing :: forall (a :: SourceUnpackedness).
Sing a -> DemoteRep SourceUnpackedness
fromSing Sing a
R:SingSourceUnpackednessa a
SNoSourceUnpackedness = DemoteRep SourceUnpackedness
SourceUnpackedness
NoSourceUnpackedness
  fromSing Sing a
R:SingSourceUnpackednessa a
SSourceNoUnpack       = DemoteRep SourceUnpackedness
SourceUnpackedness
SourceNoUnpack
  fromSing Sing a
R:SingSourceUnpackednessa a
SSourceUnpack         = DemoteRep SourceUnpackedness
SourceUnpackedness
SourceUnpack


data instance Sing (a :: SourceStrictness) where
  SNoSourceStrictness :: Sing 'NoSourceStrictness
  SSourceLazy         :: Sing 'SourceLazy
  SSourceStrict       :: Sing 'SourceStrict


instance SingI 'NoSourceStrictness where sing :: Sing 'NoSourceStrictness
sing = Sing 'NoSourceStrictness
SNoSourceStrictness


instance SingI 'SourceLazy         where sing :: Sing 'SourceLazy
sing = Sing 'SourceLazy
SSourceLazy


instance SingI 'SourceStrict       where sing :: Sing 'SourceStrict
sing = Sing 'SourceStrict
SSourceStrict


instance SingKind SourceStrictness where
  type DemoteRep SourceStrictness = SourceStrictness
  fromSing :: forall (a :: SourceStrictness).
Sing a -> DemoteRep SourceStrictness
fromSing Sing a
R:SingSourceStrictnessa a
SNoSourceStrictness = DemoteRep SourceStrictness
SourceStrictness
NoSourceStrictness
  fromSing Sing a
R:SingSourceStrictnessa a
SSourceLazy         = DemoteRep SourceStrictness
SourceStrictness
SourceLazy
  fromSing Sing a
R:SingSourceStrictnessa a
SSourceStrict       = DemoteRep SourceStrictness
SourceStrictness
SourceStrict


data instance Sing (a :: DecidedStrictness) where
  SDecidedLazy   :: Sing 'DecidedLazy
  SDecidedStrict :: Sing 'DecidedStrict
  SDecidedUnpack :: Sing 'DecidedUnpack


instance SingI 'DecidedLazy   where sing :: Sing 'DecidedLazy
sing = Sing 'DecidedLazy
SDecidedLazy


instance SingI 'DecidedStrict where sing :: Sing 'DecidedStrict
sing = Sing 'DecidedStrict
SDecidedStrict


instance SingI 'DecidedUnpack where sing :: Sing 'DecidedUnpack
sing = Sing 'DecidedUnpack
SDecidedUnpack


instance SingKind DecidedStrictness where
  type DemoteRep DecidedStrictness = DecidedStrictness
  fromSing :: forall (a :: DecidedStrictness).
Sing a -> DemoteRep DecidedStrictness
fromSing Sing a
R:SingDecidedStrictnessa a
SDecidedLazy   = DemoteRep DecidedStrictness
DecidedStrictness
DecidedLazy
  fromSing Sing a
R:SingDecidedStrictnessa a
SDecidedStrict = DemoteRep DecidedStrictness
DecidedStrictness
DecidedStrict
  fromSing Sing a
R:SingDecidedStrictnessa a
SDecidedUnpack = DemoteRep DecidedStrictness
DecidedStrictness
DecidedUnpack


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4