Skip to content

Commit

Permalink
added Zipper
Browse files Browse the repository at this point in the history
  • Loading branch information
paolino committed Nov 15, 2011
1 parent e1ccbe6 commit b4ba6c0
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions Data/List/Zipper.hs
@@ -0,0 +1,24 @@
module Data.List.Zipper where

data Zipper a = Zipper [a] [a]

sinistra z@(Zipper [] _) = z
sinistra (Zipper (x:xs) ys) = Zipper xs (x:ys)

destra z@(Zipper _ [x]) = z
destra (Zipper xs (y:ys)) = Zipper (y:xs) ys

mkZipper x = Zipper [] [x]
valore (Zipper _ (x:_)) = x

inserisci f (Zipper xs (y:ys)) = Zipper (y:xs) ((f y):ys)

elimina (Zipper [] [y]) = Nothing
elimina (Zipper (x:xs) [y]) = Just (Zipper xs [x])
elimina (Zipper xs (y:ys)) = Just (Zipper xs ys)

modifica f (Zipper xs (y:ys)) = Zipper xs (f y : ys)
elementi (Zipper xs ys) = xs ++ ys



0 comments on commit b4ba6c0

Please sign in to comment.