2c8ad3ff29702c004a66bcc2ca44839fc4778025
[fp1415.git] / week3 / mart / StdSortList.icl
1 implementation module StdSortList
2
3 import StdEnv
4
5 :: SortList a = SortList (SortList a, a, SortList a) | Empty
6
7 newSortList :: SortList a
8 newSortList = Empty
9
10 memberSort :: a (SortList a) -> Bool | Eq, Ord a
11 memberSort x Empty = False
12 memberSort x (le, el, gr)
13 | x == e = True
14 | x < el = memberSort x le
15 | otherwise = memberSort x gr
16
17 insertSort :: a (SortList a) -> SortList a | Ord a
18 memberSort x Empty = Sortlist (Empty, x, Empty)
19 memberSort x (le, el, gr)
20
21 removeFirst :: a (SortList a) -> SortList a | Eq, Ord a
22 removeFirst e ([], _)_ = ([], _)
23
24 removeAll :: a (SortList a) -> SortList a
25 removeAll _ _ = Empty
26
27 elements :: (SortList a) -> [a]
28 elements _ = []
29
30 count :: (SortList a) -> Int
31 count _ = 0
32
33 minimum :: (SortList a) -> a
34 minimum _ = 0
35
36 maximum :: (SortList a) -> a
37 maximum _ = 0
38
39 mergeSortList :: (SortList a) (SortList b) -> (SortList a)
40 mergeSortList _ _ = Empty
41
42 Start :: String
43 Start = newSortList