|
|
@ -11,6 +11,17 @@ module DataStructures where
|
|
11
|
11
|
|
|
12
|
12
|
import Prelude hiding (concat, drop, last, length, reverse, take)
|
|
13
|
13
|
|
|
|
14
|
-- examples
|
|
|
15
|
sl = fromList [1..10] :: List Integer
|
|
|
16
|
bq = fromList [1..10] :: BankersQueue Integer
|
|
|
17
|
ft = fromList [1..10] :: FingerTree Integer
|
|
|
18
|
|
|
|
19
|
-- properties
|
|
|
20
|
|
|
|
21
|
-- rest nil == nil
|
|
|
22
|
-- (reverse . reverse) s == s
|
|
|
23
|
-- first [s] == last [s]
|
|
|
24
|
|
|
14
|
25
|
class Seq s where
|
|
15
|
26
|
first :: s a -> Maybe a
|
|
16
|
27
|
|
|
|
@ -256,13 +267,3 @@ instance Queue FingerTree where
|
|
256
|
267
|
dequeue ft =
|
|
257
|
268
|
case last ft of
|
|
258
|
269
|
Just x -> Just (x, rest ft) -- broken, we'd need a different version of rest
|
|
259
|
|
sl = fromList [1..10] :: List Integer
|
|
260
|
|
bq = fromList [1..10] :: BankersQueue Integer
|
|
261
|
|
ft = fromList [1..10] :: FingerTree Integer
|
|
262
|
|
|
|
263
|
|
|