Safe Haskell | None |
---|---|
Language | Haskell2010 |
Witness isomorphism between
b
and
HardForkBlock '[b]
Synopsis
-
class
Isomorphic
f
where
- project :: NoHardForks blk => f ( HardForkBlock '[blk]) -> f blk
- inject :: NoHardForks blk => f blk -> f ( HardForkBlock '[blk])
- inject' :: forall proxy f x y blk. ( Isomorphic f, NoHardForks blk, Coercible x (f blk), Coercible y (f ( HardForkBlock '[blk]))) => proxy (f blk) -> x -> y
- project' :: forall proxy f x y blk. ( Isomorphic f, NoHardForks blk, Coercible x (f ( HardForkBlock '[blk])), Coercible y (f blk)) => proxy (f blk) -> x -> y
-
data
ProjHardForkQuery
b ::
Type
->
Type
where
- ProjHardForkQuery :: BlockQuery b result' -> ProjHardForkQuery b ( HardForkQueryResult '[b] result')
- injNestedCtxt :: NestedCtxt f blk a -> NestedCtxt f ( HardForkBlock '[blk]) a
- injQuery :: BlockQuery b result -> BlockQuery ( HardForkBlock '[b]) ( HardForkQueryResult '[b] result)
- injQueryResult :: result -> HardForkQueryResult '[b] result
- projNestedCtxt :: NestedCtxt f ( HardForkBlock '[blk]) a -> NestedCtxt f blk a
- projQuery :: BlockQuery ( HardForkBlock '[b]) result -> ( forall result'. (result :~: HardForkQueryResult '[b] result') -> BlockQuery b result' -> a) -> a
- projQuery' :: BlockQuery ( HardForkBlock '[b]) result -> ProjHardForkQuery b result
- projQueryResult :: HardForkQueryResult '[b] result -> result
- newtype I a = I a
- data Proxy (t :: k) = Proxy
Documentation
class Isomorphic f where Source #
project :: NoHardForks blk => f ( HardForkBlock '[blk]) -> f blk Source #
inject :: NoHardForks blk => f blk -> f ( HardForkBlock '[blk]) Source #
Instances
inject' :: forall proxy f x y blk. ( Isomorphic f, NoHardForks blk, Coercible x (f blk), Coercible y (f ( HardForkBlock '[blk]))) => proxy (f blk) -> x -> y Source #
project' :: forall proxy f x y blk. ( Isomorphic f, NoHardForks blk, Coercible x (f ( HardForkBlock '[blk])), Coercible y (f blk)) => proxy (f blk) -> x -> y Source #
Dependent types
data ProjHardForkQuery b :: Type -> Type where Source #
ProjHardForkQuery :: BlockQuery b result' -> ProjHardForkQuery b ( HardForkQueryResult '[b] result') |
injNestedCtxt :: NestedCtxt f blk a -> NestedCtxt f ( HardForkBlock '[blk]) a Source #
injQuery :: BlockQuery b result -> BlockQuery ( HardForkBlock '[b]) ( HardForkQueryResult '[b] result) Source #
Inject
BlockQuery
Not an instance of
Isomorphic
because the types change.
injQueryResult :: result -> HardForkQueryResult '[b] result Source #
projNestedCtxt :: NestedCtxt f ( HardForkBlock '[blk]) a -> NestedCtxt f blk a Source #
projQuery :: BlockQuery ( HardForkBlock '[b]) result -> ( forall result'. (result :~: HardForkQueryResult '[b] result') -> BlockQuery b result' -> a) -> a Source #
Project
BlockQuery
Not an instance of
Isomorphic
because the types change.
projQuery' :: BlockQuery ( HardForkBlock '[b]) result -> ProjHardForkQuery b result Source #
projQueryResult :: HardForkQueryResult '[b] result -> result Source #
Convenience exports
The identity type functor.
Like
Identity
, but with a shorter name.
I a |
Instances
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) | |