|
Copyright 2008 - 2009 Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Nick Partridge, Jason Zaugg This software is released under an open source BSD licence. |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectfj.data.Tree<A>
public final class Tree<A>
Provides a lazy, immutable, non-empty, multi-way tree (a rose tree).
Method Summary | ||
---|---|---|
|
cobind(F<Tree<A>,B> f)
Applies the given function to all subtrees of this tree, returning a tree of the results (comonad pattern). |
|
Tree<Tree<A>> |
cojoin()
Expands this tree into a tree of trees, with this tree as the root label, and subtrees as the labels of child nodes (comonad pattern). |
|
String |
draw(Show<A> s)
Draws a 2-dimensional representation of a tree. |
|
static
|
flatten_()
flatten :: Tree a -> [a] flatten t = squish t [] where squish (Node x ts) xs = x:Prelude.foldr squish xs ts Puts the elements of the tree into a Stream, in pre-order. |
|
Stream<A> |
flatten()
Puts the elements of the tree into a Stream, in pre-order. |
|
static
|
fmap_()
Provides a transformation to lift any function so that it maps over Trees. |
|
|
fmap(F<A,B> f)
Maps the given function over this tree. |
|
static
|
foldMap_(F<A,B> f,
Monoid<B> m)
Provides a function that folds a tree with the given monoid. |
|
|
foldMap(F<A,B> f,
Monoid<B> m)
Folds this tree using the given monoid. |
|
Iterator<A> |
iterator()
Returns an iterator for this tree. |
|
static
|
leaf(A root)
Creates a nullary tree. |
|
Stream<Stream<A>> |
levels()
Provides a stream of the elements of the tree at each level, in level order. |
|
static
|
node()
First-class constructor of trees. |
|
static
|
node(A root,
List<Tree<A>> forest)
Creates a new n-ary given a root and a subforest of length n. |
|
static
|
node(A root,
P1<Stream<Tree<A>>> forest)
Creates a new tree given a root and a (potentially infinite) subforest. |
|
static
|
node(A root,
Stream<Tree<A>> forest)
Creates a new tree given a root and a (potentially infinite) subforest. |
|
static
|
root_()
Provides a transformation from a tree to its root. |
|
A |
root()
Returns the root element of the tree. |
|
static
|
show2D(Show<A> s)
Provides a show instance that draws a 2-dimensional representation of a tree. |
|
static
|
subForest_()
Provides a transformation from a tree to its subforest. |
|
P1<Stream<Tree<A>>> |
subForest()
Returns a stream of the tree's subtrees. |
|
Collection<A> |
toCollection()
Projects an immutable collection of this tree. |
|
static
|
unfoldTree(F<B,P2<A,P1<Stream<B>>>> f)
Builds a tree from a seed value. |
|
|
zipWith(Tree<B> bs,
F<A,F<B,C>> f)
Zips this tree with antother, using the given function. |
|
|
zipWith(Tree<B> bs,
F2<A,B,C> f)
Zips this tree with antother, using the given function. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
---|
public Iterator<A> iterator()
for
-each loop.
iterator
in interface Iterable<A>
public static <A> Tree<A> leaf(A root)
root
- The root element of the tree.
public static <A> Tree<A> node(A root, P1<Stream<Tree<A>>> forest)
root
- The root element of the tree.forest
- A stream of the tree's subtrees.
public static <A> Tree<A> node(A root, Stream<Tree<A>> forest)
root
- The root element of the tree.forest
- A stream of the tree's subtrees.
public static <A> Tree<A> node(A root, List<Tree<A>> forest)
root
- The root element of the tree.forest
- A list of the tree's subtrees.
public static <A> F<A,F<P1<Stream<Tree<A>>>,Tree<A>>> node()
public A root()
public P1<Stream<Tree<A>>> subForest()
public static <A> F<Tree<A>,A> root_()
public static <A> F<Tree<A>,P1<Stream<Tree<A>>>> subForest_()
public Stream<A> flatten()
public static <A> F<Tree<A>,Stream<A>> flatten_()
public Stream<Stream<A>> levels()
public <B> Tree<B> fmap(F<A,B> f)
f
- The function to map over this tree.
public static <A,B> F<F<A,B>,F<Tree<A>,Tree<B>>> fmap_()
public <B> B foldMap(F<A,B> f, Monoid<B> m)
f
- A transformation from this tree's elements, to the monoid.m
- The monoid to fold this tree with.
public Collection<A> toCollection()
public static <A,B> F<Tree<A>,B> foldMap_(F<A,B> f, Monoid<B> m)
f
- A transformation from a tree's elements to the monoid.m
- A monoid to fold the tree with.
public static <A,B> F<B,Tree<A>> unfoldTree(F<B,P2<A,P1<Stream<B>>>> f)
f
- A function with which to build the tree.
public <B> Tree<B> cobind(F<Tree<A>,B> f)
f
- A function to bind across all the subtrees of this tree.
public Tree<Tree<A>> cojoin()
public String draw(Show<A> s)
s
- A show instance for the elements of the tree.
public static <A> Show<Tree<A>> show2D(Show<A> s)
s
- A show instance for the elements of the tree.
public <B,C> Tree<C> zipWith(Tree<B> bs, F2<A,B,C> f)
bs
- A tree to zip this tree with.f
- A function with which to zip together the two trees.
public <B,C> Tree<C> zipWith(Tree<B> bs, F<A,F<B,C>> f)
bs
- A tree to zip this tree with.f
- A function with which to zip together the two trees.
|
Copyright 2008 - 2009 Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Nick Partridge, Jason Zaugg This software is released under an open source BSD licence. |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |