1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
implementation module StdSortList
import StdEnv
:: SortList a :== ([a], a)
newSortList :: SortList a
newSortList = ([], abort "Empty list")
memberSort :: a (SortList a) -> Bool | Eq, Ord a
memberSort e ([], y) = y
memberSort e ([x:xs], y)
| e == x = True
| e > x = False
| otherwise = memberSort e (xs, y)
insertSort :: a (SortList a) -> SortList a | Ord a
insertSort e ([], y) = ([e], e)
insertSort e ([x:xs], y)
| e <= x = ([e:x:xs], y)
| otherwise = ([x:fst result], snd result)
where result = insertSort e (xs, y)
removeFirst :: a (SortList a) -> SortList a | Eq, Ord a
removeFirst e ([], y) = y
removeFirst e ([e], e) = newSortList
removeFirst e ([x:xs], y)
| e == x = ([xs], y)
removeFirst _ _ = abort ""
removeAll :: a (SortList a) -> SortList a | Eq, Ord a
removeAll _ _ = abort ""
elements :: (SortList a) -> [a]
elements _ = abort ""
count :: (SortList a) -> Int
count _ = abort ""
minimum :: (SortList a) -> a
minimum _ = abort ""
maximum :: (SortList a) -> a
maximum _ = abort ""
mergeSortList :: (SortList a) (SortList b) -> (SortList a)
mergeSortList _ _ = abort ""
Start :: String
Start = newSortList
|