Copyright | Copyright (C) 2010 Uwe Schmidt |
---|---|
License | MIT |
Maintainer | Uwe Schmidt (uwe\@fh-wedel.de) |
Stability | stable |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
Implementation of navigateble trees for rose trees. The implementation is done with zippers. A description and introductory tutorial about zippers can be found in http://learnyouahaskell.com/zippers
Synopsis
- data NTZipper a = NTZ {
- ntree :: NTree a
- context :: NTBreadCrumbs a
- type NTBreadCrumbs a = [NTCrumb a]
- data NTCrumb a = NTC (NTrees a) a (NTrees a)
- toNTZipper :: NTree a -> NTZipper a
- fromNTZipper :: NTZipper a -> NTree a
- up :: NTZipper a -> Maybe (NTZipper a)
- down :: NTZipper a -> Maybe (NTZipper a)
- toTheRight :: NTZipper a -> Maybe (NTZipper a)
- toTheLeft :: NTZipper a -> Maybe (NTZipper a)
- addToTheLeft :: NTree a -> NTZipper a -> Maybe (NTZipper a)
- addToTheRight :: NTree a -> NTZipper a -> Maybe (NTZipper a)
- dropFromTheLeft :: NTZipper a -> Maybe (NTZipper a)
- dropFromTheRight :: NTZipper a -> Maybe (NTZipper a)
- isTop :: NTZipper a -> Bool
- up1 :: NTree a -> NTCrumb a -> NTree a
Documentation
Zipper for rose trees
A zipper consist of the current tree and the branches on the way back to the root
NTZ | |
|
Instances
Functor NTZipper Source # | |
Tree NTZipper Source # | |
Defined in Data.Tree.NTree.Zipper.TypeDefs mkTree :: a -> [NTZipper a] -> NTZipper a Source # mkLeaf :: a -> NTZipper a Source # isLeaf :: NTZipper a -> Bool Source # isInner :: NTZipper a -> Bool Source # getNode :: NTZipper a -> a Source # getChildren :: NTZipper a -> [NTZipper a] Source # changeNode :: (a -> a) -> NTZipper a -> NTZipper a Source # changeChildren :: ([NTZipper a] -> [NTZipper a]) -> NTZipper a -> NTZipper a Source # setNode :: a -> NTZipper a -> NTZipper a Source # setChildren :: [NTZipper a] -> NTZipper a -> NTZipper a Source # foldTree :: (a -> [b] -> b) -> NTZipper a -> b Source # nodesTree :: NTZipper a -> [a] Source # depthTree :: NTZipper a -> Int Source # cardTree :: NTZipper a -> Int Source # formatTree :: (a -> String) -> NTZipper a -> String Source # | |
NavigatableTree NTZipper Source # | |
NavigatableTreeModify NTZipper NTree Source # | |
NavigatableTreeToTree NTZipper NTree Source # | |
Show a => Show (NTZipper a) Source # | |
type NTBreadCrumbs a = [NTCrumb a] Source #
The list of unzipped nodes from a current tree back to the root
One unzipped step consists of the left siblings, the node info and the right siblings
toNTZipper :: NTree a -> NTZipper a Source #
Conversion of a rose tree into a navigatable rose tree
fromNTZipper :: NTZipper a -> NTree a Source #
Conversion of a navigatable rose tree into an ordinary rose tree.
The context, the parts for moving up to the root are just removed from the tree. So when transforming a navigatable tree by moving around and by changing some nodes, one has to navigate back to the root, else that parts are removed from the result