{-# LANGUAGE TypeFamilies #-} module Cursor.Simple.Forest ( ForestCursor, FC.singletonForestCursor, makeForestCursor, rebuildForestCursor, FC.drawForestCursor, mapForestCursor, FC.forestCursorListCursorL, FC.forestCursorSelectedTreeL, forestCursorSelectPrevTreeCursor, forestCursorSelectNextTreeCursor, forestCursorSelectFirstTreeCursor, forestCursorSelectLastTreeCursor, forestCursorSelectPrev, forestCursorSelectNext, forestCursorSelectPrevOnSameLevel, forestCursorSelectNextOnSameLevel, forestCursorSelectFirst, forestCursorSelectLast, forestCursorSelectFirstOnSameLevel, forestCursorSelectLastOnSameLevel, forestCursorSelectAbove, forestCursorSelectBelowAtPos, forestCursorSelectBelowAtStart, forestCursorSelectBelowAtEnd, FC.forestCursorOpenCurrentForest, FC.forestCursorCloseCurrentForest, FC.forestCursorToggleCurrentForest, FC.forestCursorOpenCurrentForestRecursively, FC.forestCursorToggleCurrentForestRecursively, FC.forestCursorSelection, forestCursorSelectIndex, FC.forestCursorInsertEntireTree, forestCursorInsertAndSelectTreeCursor, FC.forestCursorAppendEntireTree, forestCursorAppendAndSelectTreeCursor, FC.forestCursorInsertTree, FC.forestCursorAppendTree, forestCursorInsertAndSelectTree, forestCursorAppendAndSelectTree, FC.forestCursorInsert, FC.forestCursorAppend, forestCursorInsertAndSelect, forestCursorAppendAndSelect, forestCursorInsertNodeSingleAndSelect, forestCursorAppendNodeSingleAndSelect, forestCursorInsertNodeAndSelect, forestCursorAppendNodeAndSelect, FC.forestCursorAddChildTreeToNodeAtPos, FC.forestCursorAddChildTreeToNodeAtStart, FC.forestCursorAddChildTreeToNodeAtEnd, FC.forestCursorAddChildToNodeAtPos, FC.forestCursorAddChildToNodeAtStart, FC.forestCursorAddChildToNodeAtEnd, forestCursorAddChildTreeToNodeAtPosAndSelect, forestCursorAddChildTreeToNodeAtStartAndSelect, forestCursorAddChildTreeToNodeAtEndAndSelect, forestCursorAddChildToNodeAtPosAndSelect, forestCursorAddChildToNodeAtStartAndSelect, forestCursorAddChildToNodeAtEndAndSelect, forestCursorAddChildNodeSingleToNodeAtPosAndSelect, forestCursorAddChildNodeSingleToNodeAtStartAndSelect, forestCursorAddChildNodeSingleToNodeAtEndAndSelect, forestCursorAddChildNodeToNodeAtPosAndSelect, forestCursorAddChildNodeToNodeAtStartAndSelect, forestCursorAddChildNodeToNodeAtEndAndSelect, forestCursorRemoveElemAndSelectPrev, forestCursorDeleteElemAndSelectNext, forestCursorRemoveElem, forestCursorDeleteElem, forestCursorRemoveSubTreeAndSelectPrev, forestCursorDeleteSubTreeAndSelectNext, forestCursorRemoveSubTree, forestCursorDeleteSubTree, forestCursorAddRoot, FC.forestCursorSwapPrev, FC.forestCursorSwapNext, forestCursorPromoteElem, forestCursorPromoteSubTree, forestCursorDemoteElem, forestCursorDemoteSubTree, FC.forestCursorDemoteElemUnder, FC.forestCursorDemoteSubTreeUnder, FC.CTree (..), FC.makeCTree, FC.cTree, FC.rebuildCTree, FC.CForest (..), FC.makeCForest, FC.cForest, FC.rebuildCForest, ) where import qualified Cursor.Forest as FC import Cursor.Simple.Tree import Cursor.Types import Data.List.NonEmpty (NonEmpty) import Data.Tree import Data.Validity.Tree () type ForestCursor a = FC.ForestCursor a a makeForestCursor :: NonEmpty (CTree a) -> ForestCursor a makeForestCursor :: NonEmpty (CTree a) -> ForestCursor a makeForestCursor = (a -> a) -> NonEmpty (CTree a) -> ForestCursor a forall b a. (b -> a) -> NonEmpty (CTree b) -> ForestCursor a b FC.makeForestCursor a -> a forall a. a -> a id rebuildForestCursor :: ForestCursor a -> NonEmpty (CTree a) rebuildForestCursor :: ForestCursor a -> NonEmpty (CTree a) rebuildForestCursor = (a -> a) -> ForestCursor a -> NonEmpty (CTree a) forall a b. (a -> b) -> ForestCursor a b -> NonEmpty (CTree b) FC.rebuildForestCursor a -> a forall a. a -> a id mapForestCursor :: (a -> b) -> ForestCursor a -> ForestCursor b mapForestCursor :: (a -> b) -> ForestCursor a -> ForestCursor b mapForestCursor a -> b f = (a -> b) -> (a -> b) -> ForestCursor a -> ForestCursor b forall a c b d. (a -> c) -> (b -> d) -> ForestCursor a b -> ForestCursor c d FC.mapForestCursor a -> b f a -> b f forestCursorSelectPrevTreeCursor :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrevTreeCursor :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrevTreeCursor = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectPrevTreeCursor a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectNextTreeCursor :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNextTreeCursor :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNextTreeCursor = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectNextTreeCursor a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectFirstTreeCursor :: ForestCursor a -> ForestCursor a forestCursorSelectFirstTreeCursor :: ForestCursor a -> ForestCursor a forestCursorSelectFirstTreeCursor = (a -> a) -> (a -> a) -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> ForestCursor a b FC.forestCursorSelectFirstTreeCursor a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectLastTreeCursor :: ForestCursor a -> ForestCursor a forestCursorSelectLastTreeCursor :: ForestCursor a -> ForestCursor a forestCursorSelectLastTreeCursor = (a -> a) -> (a -> a) -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> ForestCursor a b FC.forestCursorSelectLastTreeCursor a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectNext :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNext :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNext = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectNext a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectPrev :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrev :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrev = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectPrev a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectNextOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNextOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNextOnSameLevel = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectNextOnSameLevel a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectPrevOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrevOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrevOnSameLevel = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectPrevOnSameLevel a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectFirst :: ForestCursor a -> ForestCursor a forestCursorSelectFirst :: ForestCursor a -> ForestCursor a forestCursorSelectFirst = (a -> a) -> (a -> a) -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> ForestCursor a b FC.forestCursorSelectFirst a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectLast :: ForestCursor a -> ForestCursor a forestCursorSelectLast :: ForestCursor a -> ForestCursor a forestCursorSelectLast = (a -> a) -> (a -> a) -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> ForestCursor a b FC.forestCursorSelectLast a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectFirstOnSameLevel :: ForestCursor a -> ForestCursor a forestCursorSelectFirstOnSameLevel :: ForestCursor a -> ForestCursor a forestCursorSelectFirstOnSameLevel = (a -> a) -> (a -> a) -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> ForestCursor a b FC.forestCursorSelectFirstOnSameLevel a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectLastOnSameLevel :: ForestCursor a -> ForestCursor a forestCursorSelectLastOnSameLevel :: ForestCursor a -> ForestCursor a forestCursorSelectLastOnSameLevel = (a -> a) -> (a -> a) -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> ForestCursor a b FC.forestCursorSelectLastOnSameLevel a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectAbove :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectAbove :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectAbove = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectAbove a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectBelowAtPos :: Int -> ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtPos :: Int -> ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtPos = (a -> a) -> (a -> a) -> Int -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> Int -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectBelowAtPos a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectBelowAtStart :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtStart :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtStart = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectBelowAtStart a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectBelowAtEnd :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtEnd :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtEnd = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectBelowAtEnd a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorSelectIndex :: Int -> ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectIndex :: Int -> ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectIndex = (a -> a) -> (a -> a) -> Int -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> Int -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorSelectIndex a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorInsertAndSelectTreeCursor :: TreeCursor a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelectTreeCursor :: TreeCursor a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelectTreeCursor = (a -> a) -> TreeCursor a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> TreeCursor a b -> ForestCursor a b -> ForestCursor a b FC.forestCursorInsertAndSelectTreeCursor a -> a forall a. a -> a id forestCursorAppendAndSelectTreeCursor :: TreeCursor a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelectTreeCursor :: TreeCursor a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelectTreeCursor = (a -> a) -> TreeCursor a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> TreeCursor a b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAppendAndSelectTreeCursor a -> a forall a. a -> a id forestCursorInsertAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelectTree = (a -> a) -> (a -> a) -> Tree a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> Tree b -> ForestCursor a b -> ForestCursor a b FC.forestCursorInsertAndSelectTree a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAppendAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelectTree = (a -> a) -> (a -> a) -> Tree a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> Tree b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAppendAndSelectTree a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorInsertAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelect = (a -> a) -> (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> b -> ForestCursor a b -> ForestCursor a b FC.forestCursorInsertAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorInsertNodeSingleAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorInsertNodeSingleAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorInsertNodeSingleAndSelect = (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> ForestCursor a b -> ForestCursor a b FC.forestCursorInsertNodeSingleAndSelect a -> a forall a. a -> a id forestCursorInsertNodeAndSelect :: a -> CForest a -> ForestCursor a -> ForestCursor a forestCursorInsertNodeAndSelect :: a -> CForest a -> ForestCursor a -> ForestCursor a forestCursorInsertNodeAndSelect = (a -> a) -> a -> CForest a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> CForest b -> ForestCursor a b -> ForestCursor a b FC.forestCursorInsertNodeAndSelect a -> a forall a. a -> a id forestCursorAppendAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelect = (a -> a) -> (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAppendAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAppendNodeSingleAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAppendNodeSingleAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAppendNodeSingleAndSelect = (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> ForestCursor a b -> ForestCursor a b FC.forestCursorAppendNodeSingleAndSelect a -> a forall a. a -> a id forestCursorAppendNodeAndSelect :: a -> CForest a -> ForestCursor a -> ForestCursor a forestCursorAppendNodeAndSelect :: a -> CForest a -> ForestCursor a -> ForestCursor a forestCursorAppendNodeAndSelect = (a -> a) -> a -> CForest a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> CForest b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAppendNodeAndSelect a -> a forall a. a -> a id forestCursorAddChildTreeToNodeAtPosAndSelect :: Int -> Tree a -> ForestCursor a -> ForestCursor a forestCursorAddChildTreeToNodeAtPosAndSelect :: Int -> Tree a -> ForestCursor a -> ForestCursor a forestCursorAddChildTreeToNodeAtPosAndSelect = (a -> a) -> (a -> a) -> Int -> Tree a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> Int -> Tree b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildTreeToNodeAtPosAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAddChildTreeToNodeAtStartAndSelect :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAddChildTreeToNodeAtStartAndSelect :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAddChildTreeToNodeAtStartAndSelect = (a -> a) -> (a -> a) -> Tree a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> Tree b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildTreeToNodeAtStartAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAddChildTreeToNodeAtEndAndSelect :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAddChildTreeToNodeAtEndAndSelect :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAddChildTreeToNodeAtEndAndSelect = (a -> a) -> (a -> a) -> Tree a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> Tree b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildTreeToNodeAtEndAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAddChildToNodeAtPosAndSelect :: Int -> a -> ForestCursor a -> ForestCursor a forestCursorAddChildToNodeAtPosAndSelect :: Int -> a -> ForestCursor a -> ForestCursor a forestCursorAddChildToNodeAtPosAndSelect = (a -> a) -> (a -> a) -> Int -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> Int -> b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildToNodeAtPosAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAddChildToNodeAtStartAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildToNodeAtStartAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildToNodeAtStartAndSelect = (a -> a) -> (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildToNodeAtStartAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAddChildToNodeAtEndAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildToNodeAtEndAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildToNodeAtEndAndSelect = (a -> a) -> (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> (b -> a) -> b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildToNodeAtEndAndSelect a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorAddChildNodeSingleToNodeAtPosAndSelect :: Int -> a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeSingleToNodeAtPosAndSelect :: Int -> a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeSingleToNodeAtPosAndSelect = (a -> a) -> Int -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> Int -> a -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildNodeSingleToNodeAtPosAndSelect a -> a forall a. a -> a id forestCursorAddChildNodeSingleToNodeAtStartAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeSingleToNodeAtStartAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeSingleToNodeAtStartAndSelect = (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildNodeSingleToNodeAtStartAndSelect a -> a forall a. a -> a id forestCursorAddChildNodeSingleToNodeAtEndAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeSingleToNodeAtEndAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeSingleToNodeAtEndAndSelect = (a -> a) -> a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildNodeSingleToNodeAtEndAndSelect a -> a forall a. a -> a id forestCursorAddChildNodeToNodeAtPosAndSelect :: Int -> a -> Forest a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeToNodeAtPosAndSelect :: Int -> a -> Forest a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeToNodeAtPosAndSelect = (a -> a) -> Int -> a -> Forest a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> Int -> a -> Forest b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildNodeToNodeAtPosAndSelect a -> a forall a. a -> a id forestCursorAddChildNodeToNodeAtStartAndSelect :: a -> Forest a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeToNodeAtStartAndSelect :: a -> Forest a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeToNodeAtStartAndSelect = (a -> a) -> a -> Forest a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> Forest b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildNodeToNodeAtStartAndSelect a -> a forall a. a -> a id forestCursorAddChildNodeToNodeAtEndAndSelect :: a -> Forest a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeToNodeAtEndAndSelect :: a -> Forest a -> ForestCursor a -> ForestCursor a forestCursorAddChildNodeToNodeAtEndAndSelect = (a -> a) -> a -> Forest a -> ForestCursor a -> ForestCursor a forall a b. (a -> b) -> a -> Forest b -> ForestCursor a b -> ForestCursor a b FC.forestCursorAddChildNodeToNodeAtEndAndSelect a -> a forall a. a -> a id forestCursorRemoveElemAndSelectPrev :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorRemoveElemAndSelectPrev :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorRemoveElemAndSelectPrev = (a -> a) -> ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forall b a. (b -> a) -> ForestCursor a b -> Maybe (DeleteOrUpdate (ForestCursor a b)) FC.forestCursorRemoveElemAndSelectPrev a -> a forall a. a -> a id forestCursorDeleteElemAndSelectNext :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorDeleteElemAndSelectNext :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorDeleteElemAndSelectNext = (a -> a) -> ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forall b a. (b -> a) -> ForestCursor a b -> Maybe (DeleteOrUpdate (ForestCursor a b)) FC.forestCursorDeleteElemAndSelectNext a -> a forall a. a -> a id forestCursorRemoveElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorRemoveElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorRemoveElem = (a -> a) -> ForestCursor a -> DeleteOrUpdate (ForestCursor a) forall b a. (b -> a) -> ForestCursor a b -> DeleteOrUpdate (ForestCursor a b) FC.forestCursorRemoveElem a -> a forall a. a -> a id forestCursorDeleteElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorDeleteElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorDeleteElem = (a -> a) -> ForestCursor a -> DeleteOrUpdate (ForestCursor a) forall b a. (b -> a) -> ForestCursor a b -> DeleteOrUpdate (ForestCursor a b) FC.forestCursorDeleteElem a -> a forall a. a -> a id forestCursorRemoveSubTreeAndSelectPrev :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorRemoveSubTreeAndSelectPrev :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorRemoveSubTreeAndSelectPrev = (a -> a) -> ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forall b a. (b -> a) -> ForestCursor a b -> Maybe (DeleteOrUpdate (ForestCursor a b)) FC.forestCursorRemoveSubTreeAndSelectPrev a -> a forall a. a -> a id forestCursorDeleteSubTreeAndSelectNext :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorDeleteSubTreeAndSelectNext :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorDeleteSubTreeAndSelectNext = (a -> a) -> ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forall b a. (b -> a) -> ForestCursor a b -> Maybe (DeleteOrUpdate (ForestCursor a b)) FC.forestCursorDeleteSubTreeAndSelectNext a -> a forall a. a -> a id forestCursorRemoveSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorRemoveSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorRemoveSubTree = (a -> a) -> ForestCursor a -> DeleteOrUpdate (ForestCursor a) forall b a. (b -> a) -> ForestCursor a b -> DeleteOrUpdate (ForestCursor a b) FC.forestCursorRemoveSubTree a -> a forall a. a -> a id forestCursorDeleteSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorDeleteSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorDeleteSubTree = (a -> a) -> ForestCursor a -> DeleteOrUpdate (ForestCursor a) forall b a. (b -> a) -> ForestCursor a b -> DeleteOrUpdate (ForestCursor a b) FC.forestCursorDeleteSubTree a -> a forall a. a -> a id forestCursorAddRoot :: ForestCursor a -> a -> TreeCursor a forestCursorAddRoot :: ForestCursor a -> a -> TreeCursor a forestCursorAddRoot = (a -> a) -> (a -> a) -> ForestCursor a -> a -> TreeCursor a forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> a -> TreeCursor a b FC.forestCursorAddRoot a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorPromoteElem :: ForestCursor a -> Maybe (ForestCursor a) forestCursorPromoteElem :: ForestCursor a -> Maybe (ForestCursor a) forestCursorPromoteElem = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorPromoteElem a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorPromoteSubTree :: ForestCursor a -> Maybe (ForestCursor a) forestCursorPromoteSubTree :: ForestCursor a -> Maybe (ForestCursor a) forestCursorPromoteSubTree = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorPromoteSubTree a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorDemoteElem :: ForestCursor a -> Maybe (ForestCursor a) forestCursorDemoteElem :: ForestCursor a -> Maybe (ForestCursor a) forestCursorDemoteElem = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorDemoteElem a -> a forall a. a -> a id a -> a forall a. a -> a id forestCursorDemoteSubTree :: ForestCursor a -> Maybe (ForestCursor a) forestCursorDemoteSubTree :: ForestCursor a -> Maybe (ForestCursor a) forestCursorDemoteSubTree = (a -> a) -> (a -> a) -> ForestCursor a -> Maybe (ForestCursor a) forall a b. (a -> b) -> (b -> a) -> ForestCursor a b -> Maybe (ForestCursor a b) FC.forestCursorDemoteSubTree a -> a forall a. a -> a id a -> a forall a. a -> a id