simple-zipper-0.1.0.0: Zippers made slightly easier

Safe HaskellNone
LanguageHaskell2010

Control.Zipper.Simple

Documentation

data Root a Source #

Instances

Rooted (Root a) Source # 

Associated Types

type RootedAt (Root a) :: * Source #

Methods

rezip :: Root a -> RootedAt (Root a) Source #

Focused (Root a) Source # 

Associated Types

type FocusedAt (Root a) :: * Source #

Methods

focus :: Lens' (Root a) (FocusedAt (Root a)) Source #

type RootedAt (Root a) Source # 
type RootedAt (Root a) = a
type FocusedAt (Root a) Source # 
type FocusedAt (Root a) = a

data z ==> a infixl 8 Source #

Instances

Rooted z => Rooted ((==>) z x) Source # 

Associated Types

type RootedAt ((==>) z x) :: * Source #

Methods

rezip :: (z ==> x) -> RootedAt (z ==> x) Source #

Ascend ((==>) z a) Source # 

Associated Types

type BuildsOn ((==>) z a) :: * Source #

Methods

ascend :: (z ==> a) -> BuildsOn (z ==> a) Source #

Focused ((==>) z a) Source # 

Associated Types

type FocusedAt ((==>) z a) :: * Source #

Methods

focus :: Lens' (z ==> a) (FocusedAt (z ==> a)) Source #

type RootedAt ((==>) z x) Source # 
type RootedAt ((==>) z x) = RootedAt z
type BuildsOn ((==>) z a) Source # 
type BuildsOn ((==>) z a) = z
type FocusedAt ((==>) z a) Source # 
type FocusedAt ((==>) z a) = a

data z =*=> a infixl 8 Source #

Instances

Rooted z => Rooted ((=*=>) z x) Source # 

Associated Types

type RootedAt ((=*=>) z x) :: * Source #

Methods

rezip :: (z =*=> x) -> RootedAt (z =*=> x) Source #

Ascend ((=*=>) z a) Source # 

Associated Types

type BuildsOn ((=*=>) z a) :: * Source #

Methods

ascend :: (z =*=> a) -> BuildsOn (z =*=> a) Source #

Focused ((=*=>) z a) Source # 

Associated Types

type FocusedAt ((=*=>) z a) :: * Source #

Methods

focus :: Lens' (z =*=> a) (FocusedAt (z =*=> a)) Source #

type RootedAt ((=*=>) z a) Source # 
type RootedAt ((=*=>) z a) = RootedAt z
type BuildsOn ((=*=>) z a) Source # 
type BuildsOn ((=*=>) z a) = z
type FocusedAt ((=*=>) z a) Source # 
type FocusedAt ((=*=>) z a) = a

class Rooted z where Source #

Associated Types

type RootedAt z Source #

Methods

rezip :: z -> RootedAt z Source #

rezip :: (Rooted (BuildsOn z), Ascend z) => z -> RootedAt (BuildsOn z) Source #

Instances

Rooted (Root a) Source # 

Associated Types

type RootedAt (Root a) :: * Source #

Methods

rezip :: Root a -> RootedAt (Root a) Source #

Rooted z => Rooted ((=*=>) z x) Source # 

Associated Types

type RootedAt ((=*=>) z x) :: * Source #

Methods

rezip :: (z =*=> x) -> RootedAt (z =*=> x) Source #

Rooted z => Rooted ((==>) z x) Source # 

Associated Types

type RootedAt ((==>) z x) :: * Source #

Methods

rezip :: (z ==> x) -> RootedAt (z ==> x) Source #

class Focused z where Source #

Minimal complete definition

focus

Associated Types

type FocusedAt z Source #

Methods

focus :: Lens' z (FocusedAt z) Source #

Instances

Focused (Root a) Source # 

Associated Types

type FocusedAt (Root a) :: * Source #

Methods

focus :: Lens' (Root a) (FocusedAt (Root a)) Source #

Focused ((=*=>) z a) Source # 

Associated Types

type FocusedAt ((=*=>) z a) :: * Source #

Methods

focus :: Lens' (z =*=> a) (FocusedAt (z =*=> a)) Source #

Focused ((==>) z a) Source # 

Associated Types

type FocusedAt ((==>) z a) :: * Source #

Methods

focus :: Lens' (z ==> a) (FocusedAt (z ==> a)) Source #

class Ascend z where Source #

Minimal complete definition

ascend

Associated Types

type BuildsOn z Source #

Methods

ascend :: z -> BuildsOn z Source #

Instances

Ascend ((=*=>) z a) Source # 

Associated Types

type BuildsOn ((=*=>) z a) :: * Source #

Methods

ascend :: (z =*=> a) -> BuildsOn (z =*=> a) Source #

Ascend ((==>) z a) Source # 

Associated Types

type BuildsOn ((==>) z a) :: * Source #

Methods

ascend :: (z ==> a) -> BuildsOn (z ==> a) Source #

root :: a -> Root a Source #

descendLens :: Focused z => Lens' (FocusedAt z) a -> z -> z ==> a Source #

descendPrism :: Focused z => Prism' (FocusedAt z) a -> z -> Maybe (z ==> a) Source #

descendList :: (Focused z, FocusedAt z ~ [a]) => z -> Maybe (z =*=> a) Source #

leftward :: (z =*=> a) -> Maybe (z =*=> a) Source #

rightward :: (z =*=> a) -> Maybe (z =*=> a) Source #

deleteFocus :: (z =*=> a) -> Either z (z =*=> a) Source #