ftree-0.1.3: Depth-typed functor-based trees, both top-down and bottom-up

Copyright(c) 2011 Conal Elliott
Maintainerconal@conal.net
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell98

Data.FTree.TopDown

Description

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/.

Documentation

data T :: (* -> *) -> * -> * -> * where Source

Constructors

L :: a -> T f Z a 
B :: IsNat n => f (T f n a) -> T f (S n) a 

Instances

Functor f => Functor ((:^) f n) 
(IsNat n, Applicative f) => Applicative ((:^) f n) 
(Functor f, Foldable f) => Foldable ((:^) f n) 
Traversable f => Traversable ((:^) f n) 
ShowF f => ShowF ((:^) f n) 
(Foldable f, Applicative f, IsNat n, Eq a) => Eq ((:^) f n a) 
(Foldable f, Applicative f, IsNat n, Ord a) => Ord ((:^) f n a) 
(ShowF f, Show a) => Show ((:^) f n a) 
(IsNat n, Applicative f, Monoid m) => Monoid ((:^) f n m) 

type (:^) = T Source

unL :: (f :^ Z) a -> a Source

unB :: (f :^ S n) a -> f ((f :^ n) a) Source

foldT :: forall f n a z. Functor f => (a -> z) -> (f z -> z) -> (f :^ n) a -> z 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

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 Source

inL :: (a -> b) -> (f :^ Z) a -> (f :^ Z) b Source

inB :: (f ((f :^ n) a) -> f ((f :^ n) b)) -> (f :^ S n) a -> (f :^ S n) b Source

inL2 :: (a -> b -> c) -> (f :^ Z) a -> (f :^ Z) b -> (f :^ Z) c Source

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 Source