ZipperAG-0.1: src/Language/Grammars/ZipperAG.hs
-- |
-- Module : ZipperAG
-- Copyright : 2013 Pedro Martins
-- License : BSD3
--
-- Maintainer : Pedro Martins <pedromartins4@gmail.com>
-- Stability : Experimental
-- Portability : Portable
--
-- Zipper-based AG supporting functions
module Language.Grammars.ZipperAG where
import Data.Generics.Zipper
import Data.Maybe
-- |Gives the n'th child
(.$) :: Zipper a -> Int -> Zipper a
z .$ 1 = fromJust (down' z)
z .$ n = fromJust (right ( z.$(n-1) ))
-- |parent
parent = fromJust.up
-- |Tests if z is the n'th sibling
(.|) :: Zipper a -> Int -> Bool
z .| 1 = case (left z) of
Nothing -> False
_ -> True
z .| n = case (left z) of
Nothing -> False
Just x -> z .| (n-1)