| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Consensus.HardFork.Combinator.Unary
Description
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])
- 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
- 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
- projQuery :: Query (HardForkBlock '[b]) result -> (forall result'. (result :~: HardForkQueryResult '[b] result') -> Query b result' -> a) -> a
- projQuery' :: Query (HardForkBlock '[b]) result -> ProjHardForkQuery b result
- data ProjHardForkQuery b :: Type -> Type where
- ProjHardForkQuery :: Query b result' -> ProjHardForkQuery b (HardForkQueryResult '[b] result')
- injQuery :: Query b result -> Query (HardForkBlock '[b]) (HardForkQueryResult '[b] result)
- projQueryResult :: HardForkQueryResult '[b] result -> result
- injQueryResult :: result -> HardForkQueryResult '[b] result
- projNestedCtxt :: NestedCtxt f (HardForkBlock '[blk]) a -> NestedCtxt f blk a
- injNestedCtxt :: NestedCtxt f blk a -> NestedCtxt f (HardForkBlock '[blk]) a
- data Proxy (t :: k) = Proxy
- newtype I a = I a
Documentation
class Isomorphic f where Source #
Methods
project :: NoHardForks blk => f (HardForkBlock '[blk]) -> f blk Source #
inject :: NoHardForks blk => f blk -> f (HardForkBlock '[blk]) Source #
Instances
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 #
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 #
Dependent types
projQuery :: Query (HardForkBlock '[b]) result -> (forall result'. (result :~: HardForkQueryResult '[b] result') -> Query b result' -> a) -> a Source #
Project Query
Not an instance of Isomorphic because the types change.
projQuery' :: Query (HardForkBlock '[b]) result -> ProjHardForkQuery b result Source #
data ProjHardForkQuery b :: Type -> Type where Source #
Constructors
| ProjHardForkQuery :: Query b result' -> ProjHardForkQuery b (HardForkQueryResult '[b] result') |
injQuery :: Query b result -> Query (HardForkBlock '[b]) (HardForkQueryResult '[b] result) Source #
Inject Query
Not an instance of Isomorphic because the types change.
projQueryResult :: HardForkQueryResult '[b] result -> result Source #
injQueryResult :: result -> HardForkQueryResult '[b] result Source #
projNestedCtxt :: NestedCtxt f (HardForkBlock '[blk]) a -> NestedCtxt f blk a Source #
injNestedCtxt :: NestedCtxt f blk a -> NestedCtxt f (HardForkBlock '[blk]) a Source #
Convenience 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 EitherProxy
>>>Proxy :: Proxy FunctorProxy
>>>Proxy :: Proxy complicatedStructureProxy
Constructors
| Proxy |
Instances
| Generic1 (Proxy :: k -> Type) | Since: base-4.6.0.0 |
| 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 Methods fold :: Monoid m => Proxy m -> m # foldMap :: Monoid m => (a -> m) -> Proxy a -> m # foldMap' :: Monoid m => (a -> m) -> Proxy a -> m # foldr :: (a -> b -> b) -> b -> Proxy a -> b # foldr' :: (a -> b -> b) -> b -> Proxy a -> b # foldl :: (b -> a -> b) -> b -> Proxy a -> b # foldl' :: (b -> a -> b) -> b -> Proxy a -> b # foldr1 :: (a -> a -> a) -> Proxy a -> a # foldl1 :: (a -> a -> a) -> Proxy a -> a # elem :: Eq a => a -> Proxy a -> Bool # maximum :: Ord a => Proxy a -> a # minimum :: Ord a => Proxy a -> a # | |
| 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 | |
| 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 | |
| Bounded (Proxy t) | Since: base-4.7.0.0 |
| Enum (Proxy s) | Since: base-4.7.0.0 |
| 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 |
Defined in Data.Proxy | |
| 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 |
| NFData (Proxy a) | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
| Hashable (Proxy a) | |
| Serialise (Proxy a) | Since: serialise-0.2.0.0 |
| type Rep1 (Proxy :: k -> Type) | |
| type Rep (Proxy t) | |
The identity type functor.
Like Identity, but with a shorter name.
Constructors
| I a |