Copyright | Copyright (C) 2010 Uwe Schmidt |
---|---|
License | MIT |
Maintainer | Uwe Schmidt (uwe\@fh-wedel.de) |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Interface definition for navigatable trees. Navigatable trees need to have operations to move up, down, left and right. With these elementary operations, most of the XPath axises can be defined.
Synopsis
- class NavigatableTree t where
- class NavigatableTreeToTree nt t | t -> nt, nt -> t where
- class NavigatableTreeModify nt t | t -> nt, nt -> t where
- addTreeLeft :: t a -> nt a -> Maybe (nt a)
- addTreeRight :: t a -> nt a -> Maybe (nt a)
- dropTreeLeft :: nt a -> Maybe (nt a)
- dropTreeRight :: nt a -> Maybe (nt a)
- substThisTree :: t a -> nt a -> nt a
Documentation
class NavigatableTree t where Source #
The interface for navigatable trees
mvUp :: t a -> Maybe (t a) Source #
move one step towards the root
mvDown :: t a -> Maybe (t a) Source #
descend one step to the leftmost child
mvLeft :: t a -> Maybe (t a) Source #
move to the left neighbour
mvRight :: t a -> Maybe (t a) Source #
move to the right neighbour
Instances
class NavigatableTreeToTree nt t | t -> nt, nt -> t where Source #
Conversion between trees and navigatable trees,
There is only a single navigatable tree implementation for a given tree allowed (see the functional dependencies)
fromTree :: t a -> nt a Source #
construct a navigatable tree
toTree :: nt a -> t a Source #
remove navigation
Instances
class NavigatableTreeModify nt t | t -> nt, nt -> t where Source #
Edit operation on navigatable trees
There is only a single navigatable tree implementation for a given tree allowed (see the functional dependencies)
addTreeLeft :: t a -> nt a -> Maybe (nt a) Source #
add an ordinary tree in front of the given navigatable tree
addTreeRight :: t a -> nt a -> Maybe (nt a) Source #
add an ordinary tree behind of the given navigatable tree
dropTreeLeft :: nt a -> Maybe (nt a) Source #
drop the direct left sibling tree of the given navigatable tree
dropTreeRight :: nt a -> Maybe (nt a) Source #
drop the direct right sibling tree of the given navigatable tree
substThisTree :: t a -> nt a -> nt a Source #
change the tree but remain the navigation