/** * A Show instance for tree zippers. * * @param s A Show instance for tree elements. * @return A Show instance for tree zippers. */ public static <A> Show<TreeZipper<A>> show(final Show<A> s) { return p4Show( treeShow(s), streamShow(treeShow(s)), streamShow(treeShow(s)), streamShow(p3Show(streamShow(treeShow(s)), s, streamShow(treeShow(s))))).contramap(TreeZipper.p_()); }
@Override public String toString() { return Show.treeShow(Show.<A>anyShow()).showS(this); }
/** * A show instance for the {@link Tree} type. * * @param sa Show for the elements of the tree. * @return A show instance for the {@link Tree} type. */ public static <A> Show<Tree<A>> treeShow(final Show<A> sa) { return show(a -> { Stream<Character> result = sa.f.f(a.root()); if (!a.subForest()._1().isEmpty()) { result = result.append(fromString(",")).append(streamShow(treeShow(sa), "", ",", "").f.f(a.subForest()._1())); } return fromString("Tree(").append(p(result)).append(fromString(")")); }); }