{-# OPTIONS_GHC -Wno-noncanonical-monoid-instances #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveTraversable #-}
{-# 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.Internal.Bignum.Integer ( Integer, integerToInt )
import GHC.Internal.Prim ( Addr#, Char#, Double#, Float#, Int#, Word# )
import GHC.Internal.Ptr ( Ptr(..) )
import GHC.Internal.Types hiding (Any)
import GHC.Internal.Ix ( Ix )
import GHC.Internal.Base ( Alternative(..), Applicative(..), Functor(..)
, Monad(..), MonadPlus(..), NonEmpty(..), String
, Semigroup(..), Void )
import GHC.Internal.Err (errorWithoutStackTrace)
import GHC.Internal.Classes ( Eq(..), Ord(..) )
import GHC.Internal.Enum ( Bounded, Enum )
import GHC.Internal.Prim ( coerce )
import GHC.Internal.Read ( Read(..) )
import GHC.Internal.Show ( Show(..), showString, showChar, showParen, appPrec )
import GHC.Internal.Stack.Types ( SrcLoc(..) )
import GHC.Internal.Tuple (Solo (..))
import GHC.Internal.Unicode ( GeneralCategory(..) )
import GHC.Internal.Fingerprint.Type ( Fingerprint(..) )
import GHC.Internal.Data.Semigroup.Internal
import GHC.Internal.Data.Monoid
import GHC.Internal.Data.Foldable
import GHC.Internal.Data.Traversable
import GHC.Internal.Data.Functor.Const
import GHC.Internal.Functor.ZipList
import GHC.Internal.IO.Exception ( ExitCode(..) )
import GHC.Internal.ByteOrder ( ByteOrder(..) )
import GHC.Internal.Data.Version
import GHC.Internal.Data.Functor.Identity
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
a -> Par1 a
forall p. p -> Par1 p
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 k i c (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool
$c== :: forall k i c (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool
== :: K1 i c p -> K1 i c p -> Bool
$c/= :: forall k i c (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 k i c (p :: k). Ord c => Eq (K1 i c p)
forall k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool
forall k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> Ordering
forall k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c p
$ccompare :: forall k i c (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 k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool
< :: K1 i c p -> K1 i c p -> Bool
$c<= :: forall k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool
<= :: K1 i c p -> K1 i c p -> Bool
$c> :: forall k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool
> :: K1 i c p -> K1 i c p -> Bool
$c>= :: forall k i c (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool
>= :: K1 i c p -> K1 i c p -> Bool
$cmax :: forall k i c (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 k i c (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 k i c (p :: k). Read c => ReadPrec [K1 i c p]
forall k i c (p :: k). Read c => ReadPrec (K1 i c p)
forall k i c (p :: k). Read c => Int -> ReadS (K1 i c p)
forall k i c (p :: k). Read c => ReadS [K1 i c p]
$creadsPrec :: forall k i c (p :: k). Read c => Int -> ReadS (K1 i c p)
readsPrec :: Int -> ReadS (K1 i c p)
$creadList :: forall k i c (p :: k). Read c => ReadS [K1 i c p]
readList :: ReadS [K1 i c p]
$creadPrec :: forall k i c (p :: k). Read c => ReadPrec (K1 i c p)
readPrec :: ReadPrec (K1 i c p)
$creadListPrec :: forall k i c (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 k i c (p :: k). Show c => Int -> K1 i c p -> ShowS
forall k i c (p :: k). Show c => [K1 i c p] -> ShowS
forall k i c (p :: k). Show c => K1 i c p -> String
$cshowsPrec :: forall k i c (p :: k). Show c => Int -> K1 i c p -> ShowS
showsPrec :: Int -> K1 i c p -> ShowS
$cshow :: forall k i c (p :: k). Show c => K1 i c p -> String
show :: K1 i c p -> String
$cshowList :: forall k i c (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. Rep (K1 i c p) x -> K1 i c p
forall x. K1 i c p -> Rep (K1 i c p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k i c (p :: k) x. Rep (K1 i c p) x -> K1 i c p
forall k i c (p :: k) x. K1 i c p -> Rep (K1 i c p) x
$cfrom :: forall k i c (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 k i c (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). Rep1 (K1 i c) a -> K1 i c a
forall (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 i c (a :: k). K1 i c a -> Rep1 (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 k i (c :: Meta) (f :: k -> *) (p :: k).
Eq (f p) =>
M1 i c f p -> M1 i c f p -> Bool
$c== :: forall k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (f :: k -> *) (p :: k).
Ord (f p) =>
Eq (M1 i c f p)
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Ord (f p) =>
M1 i c f p -> M1 i c f p -> Bool
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Ord (f p) =>
M1 i c f p -> M1 i c f p -> Ordering
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Ord (f p) =>
M1 i c f p -> M1 i c f p -> M1 i c f p
$ccompare :: forall k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (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 k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
ReadPrec [M1 i c f p]
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
ReadPrec (M1 i c f p)
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
Int -> ReadS (M1 i c f p)
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
ReadS [M1 i c f p]
$creadsPrec :: forall k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
Int -> ReadS (M1 i c f p)
readsPrec :: Int -> ReadS (M1 i c f p)
$creadList :: forall k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
ReadS [M1 i c f p]
readList :: ReadS [M1 i c f p]
$creadPrec :: forall k i (c :: Meta) (f :: k -> *) (p :: k).
Read (f p) =>
ReadPrec (M1 i c f p)
readPrec :: ReadPrec (M1 i c f p)
$creadListPrec :: forall k i (c :: Meta) (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 k i (c :: Meta) (f :: k -> *) (p :: k).
Show (f p) =>
Int -> M1 i c f p -> ShowS
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Show (f p) =>
[M1 i c f p] -> ShowS
forall k i (c :: Meta) (f :: k -> *) (p :: k).
Show (f p) =>
M1 i c f p -> String
$cshowsPrec :: forall k i (c :: Meta) (f :: k -> *) (p :: k).
Show (f p) =>
Int -> M1 i c f p -> ShowS
showsPrec :: Int -> M1 i c f p -> ShowS
$cshow :: forall k i (c :: Meta) (f :: k -> *) (p :: k).
Show (f p) =>
M1 i c f p -> String
show :: M1 i c f p -> String
$cshowList :: forall k i (c :: Meta) (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. Rep (M1 i c f p) x -> M1 i c f p
forall x. M1 i c f p -> Rep (M1 i c f p) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k i (c :: Meta) (f :: k -> *) (p :: k) x.
Rep (M1 i c f p) x -> M1 i c f p
forall k i (c :: Meta) (f :: k -> *) (p :: k) x.
M1 i c f p -> Rep (M1 i c f p) x
$cfrom :: forall k i (c :: Meta) (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 k i (c :: Meta) (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). Rep1 (M1 i c f) a -> M1 i c f a
forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) a
forall k i (c :: Meta) (f :: k -> *) (a :: k).
Rep1 (M1 i c f) a -> M1 i c f a
forall k i (c :: Meta) (f :: k -> *) (a :: k).
M1 i c f a -> Rep1 (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 k i (c :: Meta) (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 k i (c :: Meta) (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 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Eq (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> Bool
$c== :: forall k2 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Ord (f (g p)) =>
Eq ((:.:) f g p)
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Ord (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> Bool
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Ord (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> Ordering
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Ord (f (g p)) =>
(:.:) f g p -> (:.:) f g p -> (:.:) f g p
$ccompare :: forall k2 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
ReadPrec [(:.:) f g p]
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
ReadPrec ((:.:) f g p)
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
Int -> ReadS ((:.:) f g p)
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
ReadS [(:.:) f g p]
$creadsPrec :: forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
Int -> ReadS ((:.:) f g p)
readsPrec :: Int -> ReadS ((:.:) f g p)
$creadList :: forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
ReadS [(:.:) f g p]
readList :: ReadS [(:.:) f g p]
$creadPrec :: forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Read (f (g p)) =>
ReadPrec ((:.:) f g p)
readPrec :: ReadPrec ((:.:) f g p)
$creadListPrec :: forall k2 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
Int -> (:.:) f g p -> ShowS
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
[(:.:) f g p] -> ShowS
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
(:.:) f g p -> String
$cshowsPrec :: forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
Int -> (:.:) f g p -> ShowS
showsPrec :: Int -> (:.:) f g p -> ShowS
$cshow :: forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
Show (f (g p)) =>
(:.:) f g p -> String
show :: (:.:) f g p -> String
$cshowList :: forall k2 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1) x.
(:.:) f g p -> Rep ((:.:) f g p) x
forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1) x.
Rep ((:.:) f g p) x -> (:.:) f g p
$cfrom :: forall k2 k1 (f :: k2 -> *) (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 k1 (f :: k2 -> *) (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 k (f :: * -> *) (g :: k -> *) (a :: k).
Functor f =>
(:.:) f g a -> Rep1 (f :.: g) a
forall k (f :: * -> *) (g :: k -> *) (a :: k).
Functor f =>
Rep1 (f :.: g) a -> (:.:) f g a
$cfrom1 :: forall k (f :: * -> *) (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 k (f :: * -> *) (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 a_0 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
0 (Addr# -> Ptr a_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 {a} (a :: a). 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
deriving instance Generic (Dual a)
deriving instance Generic1 Dual
deriving instance Generic (Endo a)
deriving instance Generic All
deriving instance Generic Any
deriving instance Generic (Sum a)
deriving instance Generic1 Sum
deriving instance Generic (Product a)
deriving instance Generic1 Product
deriving instance Generic (Alt f a)
deriving instance Generic1 (Alt f)
deriving instance Generic (First a)
deriving instance Generic1 First
deriving instance Generic (Last a)
deriving instance Generic1 Last
deriving instance Generic (Ap f a)
deriving instance Generic1 (Ap f)
instance Foldable U1 where
foldMap :: forall m a. Monoid m => (a -> m) -> U1 a -> m
foldMap a -> m
_ U1 a
_ = m
forall a. Monoid a => a
mempty
{-# INLINE foldMap #-}
fold :: forall m. Monoid m => U1 m -> m
fold U1 m
_ = m
forall a. Monoid a => a
mempty
{-# INLINE fold #-}
foldr :: forall a b. (a -> b -> b) -> b -> U1 a -> b
foldr a -> b -> b
_ b
z U1 a
_ = b
z
{-# INLINE foldr #-}
foldl :: forall b a. (b -> a -> b) -> b -> U1 a -> b
foldl b -> a -> b
_ b
z U1 a
_ = b
z
{-# INLINE foldl #-}
foldl1 :: forall a. (a -> a -> a) -> U1 a -> a
foldl1 a -> a -> a
_ U1 a
_ = String -> a
forall a. String -> a
errorWithoutStackTrace String
"foldl1: U1"
foldr1 :: forall a. (a -> a -> a) -> U1 a -> a
foldr1 a -> a -> a
_ U1 a
_ = String -> a
forall a. String -> a
errorWithoutStackTrace String
"foldr1: U1"
length :: forall a. U1 a -> Int
length U1 a
_ = Int
0
null :: forall a. U1 a -> Bool
null U1 a
_ = Bool
True
elem :: forall a. Eq a => a -> U1 a -> Bool
elem a
_ U1 a
_ = Bool
False
sum :: forall a. Num a => U1 a -> a
sum U1 a
_ = a
0
product :: forall a. Num a => U1 a -> a
product U1 a
_ = a
1
deriving instance Foldable V1
deriving instance Foldable Par1
deriving instance Foldable f => Foldable (Rec1 f)
deriving instance Foldable (K1 i c)
deriving instance Foldable f => Foldable (M1 i c f)
deriving instance (Foldable f, Foldable g) => Foldable (f :+: g)
deriving instance (Foldable f, Foldable g) => Foldable (f :*: g)
deriving instance (Foldable f, Foldable g) => Foldable (f :.: g)
deriving instance Foldable UAddr
deriving instance Foldable UChar
deriving instance Foldable UDouble
deriving instance Foldable UFloat
deriving instance Foldable UInt
deriving instance Foldable UWord
instance Traversable U1 where
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> U1 a -> f (U1 b)
traverse a -> f b
_ U1 a
_ = U1 b -> f (U1 b)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure U1 b
forall k (p :: k). U1 p
U1
{-# INLINE traverse #-}
sequenceA :: forall (f :: * -> *) a. Applicative f => U1 (f a) -> f (U1 a)
sequenceA U1 (f a)
_ = U1 a -> f (U1 a)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure U1 a
forall k (p :: k). U1 p
U1
{-# INLINE sequenceA #-}
mapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> U1 a -> m (U1 b)
mapM a -> m b
_ U1 a
_ = U1 b -> m (U1 b)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure U1 b
forall k (p :: k). U1 p
U1
{-# INLINE mapM #-}
sequence :: forall (m :: * -> *) a. Monad m => U1 (m a) -> m (U1 a)
sequence U1 (m a)
_ = U1 a -> m (U1 a)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure U1 a
forall k (p :: k). U1 p
U1
{-# INLINE sequence #-}
deriving instance Traversable V1
deriving instance Traversable Par1
deriving instance Traversable f => Traversable (Rec1 f)
deriving instance Traversable (K1 i c)
deriving instance Traversable f => Traversable (M1 i c f)
deriving instance (Traversable f, Traversable g) => Traversable (f :+: g)
deriving instance (Traversable f, Traversable g) => Traversable (f :*: g)
deriving instance (Traversable f, Traversable g) => Traversable (f :.: g)
deriving instance Traversable UAddr
deriving instance Traversable UChar
deriving instance Traversable UDouble
deriving instance Traversable UFloat
deriving instance Traversable UInt
deriving instance Traversable UWord
deriving instance Generic (Const a b)
deriving instance Generic1 (Const a)
deriving instance Generic (ZipList a)
deriving instance Generic1 ZipList
deriving instance Generic ExitCode
deriving instance Generic ByteOrder
deriving instance Generic Version
deriving instance Generic (Identity a)
deriving instance Generic1 Identity