Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type DepPair = GenDepPair I
-
data
GenDepPair
g f
where
- GenDepPair :: !(f a) -> !(g a) -> GenDepPair g f
- pattern DepPair :: f a -> a -> DepPair f
- depPairFirst :: ( forall a. f a -> f' a) -> GenDepPair g f -> GenDepPair g f'
-
class
SameDepIndex
f
where
- sameDepIndex :: f a -> f b -> Maybe (a :~: b)
-
class
TrivialDependency
f
where
- type TrivialIndex f :: Type
- hasSingleIndex :: f a -> f b -> a :~: b
- indexIsTrivial :: f ( TrivialIndex f)
- fromTrivialDependency :: TrivialDependency f => f a -> a -> TrivialIndex f
- toTrivialDependency :: TrivialDependency f => f a -> TrivialIndex f -> a
- data Proxy (t :: k) = Proxy
- data (a :: k) :~: (b :: k) where
Dependent pairs
type DepPair = GenDepPair I Source #
Dependent pair
A dependent pair is a pair of values where the type of the value depends on the first value.
data GenDepPair g f where Source #
Generalization of
DepPair
This adds an additional functor
g
around the second value in the pair.
GenDepPair :: !(f a) -> !(g a) -> GenDepPair g f |
Instances
depPairFirst :: ( forall a. f a -> f' a) -> GenDepPair g f -> GenDepPair g f' Source #
Compare indices
class SameDepIndex f where Source #
Nothing
sameDepIndex :: f a -> f b -> Maybe (a :~: b) Source #
default sameDepIndex :: TrivialDependency f => f a -> f b -> Maybe (a :~: b) Source #
Instances
Trivial dependency
class TrivialDependency f where Source #
A dependency is trivial if it always maps to the same type
b
type TrivialIndex f :: Type Source #
hasSingleIndex :: f a -> f b -> a :~: b Source #
indexIsTrivial :: f ( TrivialIndex f) Source #
Instances
TrivialDependency ( NestedCtxt_ blk f) => TrivialDependency ( NestedCtxt f blk) Source # | |
Defined in Ouroboros.Consensus.Block.NestedContent type TrivialIndex ( NestedCtxt f blk) Source # hasSingleIndex :: NestedCtxt f blk a -> NestedCtxt f blk b -> a :~: b Source # indexIsTrivial :: NestedCtxt f blk ( TrivialIndex ( NestedCtxt f blk)) Source # |
fromTrivialDependency :: TrivialDependency f => f a -> a -> TrivialIndex f Source #
toTrivialDependency :: TrivialDependency f => f a -> TrivialIndex f -> a Source #
Convenience re-exports
Proxy
is a type that holds no data, but has a phantom parameter of
arbitrary type (or even kind). Its use is to provide type information, even
though there is no value available of that type (or it may be too costly to
create one).
Historically,
is a safer alternative to the
Proxy
::
Proxy
a
idiom.
undefined
:: a
>>>
Proxy :: Proxy (Void, Int -> Int)
Proxy
Proxy can even hold types of higher kinds,
>>>
Proxy :: Proxy Either
Proxy
>>>
Proxy :: Proxy Functor
Proxy
>>>
Proxy :: Proxy complicatedStructure
Proxy
Instances
Generic1 ( Proxy :: k -> Type ) |
Since: base-4.6.0.0 |
SemialignWithIndex Void ( Proxy :: Type -> Type ) | |
Defined in Data.Semialign.Internal |
|
ZipWithIndex Void ( Proxy :: Type -> Type ) | |
RepeatWithIndex Void ( Proxy :: Type -> Type ) | |
Monad ( Proxy :: Type -> Type ) |
Since: base-4.7.0.0 |
Functor ( Proxy :: Type -> Type ) |
Since: base-4.7.0.0 |
Applicative ( Proxy :: Type -> Type ) |
Since: base-4.7.0.0 |
Foldable ( Proxy :: Type -> Type ) |
Since: base-4.7.0.0 |
Defined in Data.Foldable fold :: Monoid m => Proxy m -> m Source # foldMap :: Monoid m => (a -> m) -> Proxy a -> m Source # foldMap' :: Monoid m => (a -> m) -> Proxy a -> m Source # foldr :: (a -> b -> b) -> b -> Proxy a -> b Source # foldr' :: (a -> b -> b) -> b -> Proxy a -> b Source # foldl :: (b -> a -> b) -> b -> Proxy a -> b Source # foldl' :: (b -> a -> b) -> b -> Proxy a -> b Source # foldr1 :: (a -> a -> a) -> Proxy a -> a Source # foldl1 :: (a -> a -> a) -> Proxy a -> a Source # toList :: Proxy a -> [a] Source # null :: Proxy a -> Bool Source # length :: Proxy a -> Int Source # elem :: Eq a => a -> Proxy a -> Bool Source # maximum :: Ord a => Proxy a -> a Source # minimum :: Ord a => Proxy a -> a Source # |
|
Traversable ( Proxy :: Type -> Type ) |
Since: base-4.7.0.0 |
MonadPlus ( Proxy :: Type -> Type ) |
Since: base-4.9.0.0 |
Alternative ( Proxy :: Type -> Type ) |
Since: base-4.9.0.0 |
Contravariant ( Proxy :: Type -> Type ) | |
Eq1 ( Proxy :: Type -> Type ) |
Since: base-4.9.0.0 |
Ord1 ( Proxy :: Type -> Type ) |
Since: base-4.9.0.0 |
Defined in Data.Functor.Classes |
|
Read1 ( Proxy :: Type -> Type ) |
Since: base-4.9.0.0 |
Defined in Data.Functor.Classes liftReadsPrec :: ( Int -> ReadS a) -> ReadS [a] -> Int -> ReadS ( Proxy a) Source # liftReadList :: ( Int -> ReadS a) -> ReadS [a] -> ReadS [ Proxy a] Source # liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec ( Proxy a) Source # liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [ Proxy a] Source # |
|
Show1 ( Proxy :: Type -> Type ) |
Since: base-4.9.0.0 |
NFData1 ( Proxy :: Type -> Type ) |
Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq |
|
Hashable1 ( Proxy :: Type -> Type ) | |
Defined in Data.Hashable.Class |
|
Semialign ( Proxy :: Type -> Type ) | |
Align ( Proxy :: Type -> Type ) | |
Defined in Data.Semialign.Internal |
|
Unalign ( Proxy :: Type -> Type ) | |
Zip ( Proxy :: Type -> Type ) | |
Repeat ( Proxy :: Type -> Type ) | |
Defined in Data.Semialign.Internal |
|
Unzip ( Proxy :: Type -> Type ) | |
Bounded ( Proxy t) |
Since: base-4.7.0.0 |
Enum ( Proxy s) |
Since: base-4.7.0.0 |
Defined in Data.Proxy succ :: Proxy s -> Proxy s Source # pred :: Proxy s -> Proxy s Source # toEnum :: Int -> Proxy s Source # fromEnum :: Proxy s -> Int Source # enumFrom :: Proxy s -> [ Proxy s] Source # enumFromThen :: Proxy s -> Proxy s -> [ Proxy s] Source # enumFromTo :: Proxy s -> Proxy s -> [ Proxy s] Source # enumFromThenTo :: Proxy s -> Proxy s -> Proxy s -> [ Proxy s] Source # |
|
Eq ( Proxy s) |
Since: base-4.7.0.0 |
Ord ( Proxy s) |
Since: base-4.7.0.0 |
Read ( Proxy t) |
Since: base-4.7.0.0 |
Show ( Proxy s) |
Since: base-4.7.0.0 |
Ix ( Proxy s) |
Since: base-4.7.0.0 |
Generic ( Proxy t) |
Since: base-4.6.0.0 |
Semigroup ( Proxy s) |
Since: base-4.9.0.0 |
Monoid ( Proxy s) |
Since: base-4.7.0.0 |
Hashable ( Proxy a) | |
NFData ( Proxy a) |
Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq |
|
Serialise ( Proxy a) |
Since: serialise-0.2.0.0 |
type Rep1 ( Proxy :: k -> Type ) | |
type Rep ( Proxy t) | |
data (a :: k) :~: (b :: k) where infix 4 Source #
Propositional equality. If
a :~: b
is inhabited by some terminating
value, then the type
a
is the same as the type
b
. To use this equality
in practice, pattern-match on the
a :~: b
to get out the
Refl
constructor;
in the body of the pattern-match, the compiler knows that
a ~ b
.
Since: base-4.7.0.0
Instances
TestEquality ( (:~:) a :: k -> Type ) |
Since: base-4.7.0.0 |
Defined in Data.Type.Equality |
|
NFData2 ( (:~:) :: Type -> Type -> Type ) |
Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq |
|
NFData1 ( (:~:) a) |
Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq |
|
a ~ b => Bounded (a :~: b) |
Since: base-4.7.0.0 |
a ~ b => Enum (a :~: b) |
Since: base-4.7.0.0 |
Defined in Data.Type.Equality succ :: (a :~: b) -> a :~: b Source # pred :: (a :~: b) -> a :~: b Source # toEnum :: Int -> a :~: b Source # fromEnum :: (a :~: b) -> Int Source # enumFrom :: (a :~: b) -> [a :~: b] Source # enumFromThen :: (a :~: b) -> (a :~: b) -> [a :~: b] Source # enumFromTo :: (a :~: b) -> (a :~: b) -> [a :~: b] Source # enumFromThenTo :: (a :~: b) -> (a :~: b) -> (a :~: b) -> [a :~: b] Source # |
|
Eq (a :~: b) |
Since: base-4.7.0.0 |
Ord (a :~: b) |
Since: base-4.7.0.0 |
Defined in Data.Type.Equality |
|
a ~ b => Read (a :~: b) |
Since: base-4.7.0.0 |
Show (a :~: b) |
Since: base-4.7.0.0 |
NFData (a :~: b) |
Since: deepseq-1.4.3.0 |
Defined in Control.DeepSeq |