Copyright | (c) 2011 Conal Elliott |
---|---|
Maintainer | conal@conal.net |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell98 |
Top-down, depth-typed functor trees. In other words, right-associated n-ary functor composition. See http://conal.net/blog/posts/a-trie-for-length-typed-vectors/.
Synopsis
- data T :: (* -> *) -> * -> * -> * where
- type (:^) = T
- unL :: (f :^ Z) a -> a
- unB :: (f :^ S n) a -> f ((f :^ n) a)
- foldT :: forall f n a z. Functor f => (a -> z) -> (f z -> z) -> (f :^ n) a -> z
- inT :: (a -> b) -> (forall n. IsNat n => f ((f :^ n) a) -> f ((f :^ n) b)) -> forall n. (f :^ n) a -> (f :^ n) b
- inT2 :: (a -> b -> c) -> (forall n. IsNat n => f ((f :^ n) a) -> f ((f :^ n) b) -> f ((f :^ n) c)) -> forall n. (f :^ n) a -> (f :^ n) b -> (f :^ n) c
- inL :: (a -> b) -> (f :^ Z) a -> (f :^ Z) b
- inB :: (f ((f :^ n) a) -> f ((f :^ n) b)) -> (f :^ S n) a -> (f :^ S n) b
- inL2 :: (a -> b -> c) -> (f :^ Z) a -> (f :^ Z) b -> (f :^ Z) c
- inB2 :: (f ((f :^ n) a) -> f ((f :^ n) b) -> f ((f :^ n) c)) -> (f :^ S n) a -> (f :^ S n) b -> (f :^ S n) c
Documentation
data T :: (* -> *) -> * -> * -> * where Source #
Instances
Functor f => Functor (f :^ n) Source # | |
(IsNat n, Applicative f) => Applicative (f :^ n) Source # | |
(Functor f, Foldable f) => Foldable (f :^ n) Source # | |
Defined in Data.FTree.TopDown fold :: Monoid m => (f :^ n) m -> m # foldMap :: Monoid m => (a -> m) -> (f :^ n) a -> m # foldr :: (a -> b -> b) -> b -> (f :^ n) a -> b # foldr' :: (a -> b -> b) -> b -> (f :^ n) a -> b # foldl :: (b -> a -> b) -> b -> (f :^ n) a -> b # foldl' :: (b -> a -> b) -> b -> (f :^ n) a -> b # foldr1 :: (a -> a -> a) -> (f :^ n) a -> a # foldl1 :: (a -> a -> a) -> (f :^ n) a -> a # elem :: Eq a => a -> (f :^ n) a -> Bool # maximum :: Ord a => (f :^ n) a -> a # minimum :: Ord a => (f :^ n) a -> a # | |
Traversable f => Traversable (f :^ n) Source # | |
ShowF f => ShowF (f :^ n) Source # | |
(Foldable f, Applicative f, IsNat n, Eq a) => Eq ((f :^ n) a) Source # | |
(Foldable f, Applicative f, IsNat n, Ord a) => Ord ((f :^ n) a) Source # | |
(ShowF f, Show a) => Show ((f :^ n) a) Source # | |
(IsNat n, Applicative f, Semigroup m) => Semigroup ((f :^ n) m) Source # | |
(IsNat n, Applicative f, Monoid m) => Monoid ((f :^ n) m) Source # | |
inT :: (a -> b) -> (forall n. IsNat n => f ((f :^ n) a) -> f ((f :^ n) b)) -> forall n. (f :^ n) a -> (f :^ n) b Source #
Operate inside the representation of `f :^ n` to make another, preserving depth.