Oh, an example:

*Main> fromList [1..8] :: SkipList Z Int
Cons (Branch 1 1 None None) (Cons (Branch 3 2 (Branch 1 3 None None)
(Branch 1 4 None None)) (Cons (Branch 4 5 (Branch 3 6 (Branch 1 7 None
None) (Branch 1 8 None None)) None) Empty))
*Main> fromList [1..8] :: SkipList (S Z) Int
Cons (Branch 3 1 (Branch 1 2 None None) (Branch 1 3 None None)) (Cons
(Branch 5 4 (Branch 3 5 (Branch 1 6 None None) (Branch 1 7 None None))
(Branch 1 8 None None)) Empty)
*Main> fromList [1..8] :: SkipList (S (S Z)) Int
Cons (Branch 7 1 (Branch 3 2 (Branch 1 3 None None) (Branch 1 4 None
None)) (Branch 3 5 (Branch 1 6 None None) (Branch 1 7 None None)))
(Cons (Branch 1 8 None None) Empty)

*Main> let x = fromList [1..8] :: SkipList Z Int
*Main> toList x
[1,2,3,4,5,6,7,8]
*Main> x `index` 3
Just 4
*Main> x `index` 8
Nothing

Cheers! =)

-- 
Felipe.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to