Safe Haskell | None |
---|---|
Language | Haskell2010 |
Classes applying on HyperType
s recursively
Synopsis
- class Recursive c where
- recurse :: (HNodes h, c h) => proxy (c h) -> Dict (HNodesConstraint h c)
- class RNodes h => Recursively c h where
- recursively :: proxy (c h) -> Dict (c h, HNodesConstraint h (Recursively c))
- class HNodes h => RNodes h where
- recursiveHNodes :: proxy h -> Dict (HNodesConstraint h RNodes)
- class (HTraversable h, Recursively HFunctor h, Recursively HFoldable h) => RTraversable h where
- recursiveHTraversable :: proxy h -> Dict (HNodesConstraint h RTraversable)
- proxyArgument :: proxy (f h :: Constraint) -> Proxy (h :: HyperType)
Documentation
class Recursive c where Source #
A class of constraint constructors that apply to all recursive child nodes
recurse :: (HNodes h, c h) => proxy (c h) -> Dict (HNodesConstraint h c) Source #
Lift a recursive constraint to the next layer
Instances
Recursive RTraversable Source # | |
Defined in Hyper.Class.Recursive recurse :: forall (h :: HyperType) proxy. (HNodes h, RTraversable h) => proxy (RTraversable h) -> Dict (HNodesConstraint h RTraversable) Source # | |
Recursive RNodes Source # | |
Recursive RTraversableInferOf Source # | |
Defined in Hyper.Class.Infer.InferOf recurse :: forall (h :: HyperType) proxy. (HNodes h, RTraversableInferOf h) => proxy (RTraversableInferOf h) -> Dict (HNodesConstraint h RTraversableInferOf) Source # | |
Recursive (Recursively c) Source # | |
Defined in Hyper.Class.Recursive recurse :: forall (h :: HyperType) proxy. (HNodes h, Recursively c h) => proxy (Recursively c h) -> Dict (HNodesConstraint h (Recursively c)) Source # | |
Recursive (UnifyGen m) Source # | |
Recursive (Unify m) Source # | |
Recursive (Infer m) Source # | |
Recursive (Blame m) Source # | |
Recursive (HasScheme varTypes m) Source # | |
class RNodes h => Recursively c h where Source #
A constraint lifted to apply recursively.
Note that in cases where a constraint has dependencies other than RNodes
,
one will want to create a class such as RTraversable to capture the dependencies,
otherwise using it in class contexts will be quite unergonomic.
Nothing
recursively :: proxy (c h) -> Dict (c h, HNodesConstraint h (Recursively c)) Source #
default recursively :: (c h, HNodesConstraint h (Recursively c)) => proxy (c h) -> Dict (c h, HNodesConstraint h (Recursively c)) Source #
Instances
class HNodes h => RNodes h where Source #
Nothing
recursiveHNodes :: proxy h -> Dict (HNodesConstraint h RNodes) Source #
default recursiveHNodes :: HNodesConstraint h RNodes => proxy h -> Dict (HNodesConstraint h RNodes) Source #
Instances
class (HTraversable h, Recursively HFunctor h, Recursively HFoldable h) => RTraversable h where Source #
A class of HyperType
s which recursively implement HTraversable
Nothing
recursiveHTraversable :: proxy h -> Dict (HNodesConstraint h RTraversable) Source #
default recursiveHTraversable :: HNodesConstraint h RTraversable => proxy h -> Dict (HNodesConstraint h RTraversable) Source #
Instances
proxyArgument :: proxy (f h :: Constraint) -> Proxy (h :: HyperType) Source #
Helper Proxy combinator that is useful in many instances of Recursive