1 implementation module StdSortList
5 :: SortList a :== ([a], a)
7 newSortList :: SortList a
8 newSortList = ([], abort "Empty list")
10 memberSort :: a (SortList a) -> Bool | Eq, Ord a
11 memberSort e ([], y) = y
12 memberSort e ([x:xs], y)
15 | otherwise = memberSort e (xs, y)
17 insertSort :: a (SortList a) -> SortList a | Ord a
18 insertSort e ([], y) = ([e], e)
19 insertSort e ([x:xs], y)
20 | e <= x = ([e:x:xs], y)
21 | otherwise = ([x:fst result], snd result)
22 where result = insertSort e (xs, y)
24 removeFirst :: a (SortList a) -> SortList a | Eq, Ord a
25 removeFirst e ([], y) = y
26 removeFirst e ([e], e) = newSortList
27 removeFirst e ([x:xs], y)
29 removeFirst _ _ = abort ""
31 removeAll :: a (SortList a) -> SortList a | Eq, Ord a
32 removeAll _ _ = abort ""
34 elements :: (SortList a) -> [a]
37 count :: (SortList a) -> Int
40 minimum :: (SortList a) -> a
43 maximum :: (SortList a) -> a
46 mergeSortList :: (SortList a) (SortList b) -> (SortList a)
47 mergeSortList _ _ = abort ""