diff options
author | Mart Lubbers | 2015-03-03 12:09:15 +0100 |
---|---|---|
committer | Mart Lubbers | 2015-03-03 12:09:15 +0100 |
commit | 61948c672d3a98027383e4bcc6b95d2db492f974 (patch) | |
tree | 28d9c156ed48dc4d730786d603f76bcaee335ba8 /week3/mart/StdSortList.icl | |
parent | Ik begrijp deze opgave niet echt... (diff) |
StdSet werkend
Diffstat (limited to 'week3/mart/StdSortList.icl')
-rw-r--r-- | week3/mart/StdSortList.icl | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/week3/mart/StdSortList.icl b/week3/mart/StdSortList.icl index 2c8ad3f..db71a36 100644 --- a/week3/mart/StdSortList.icl +++ b/week3/mart/StdSortList.icl @@ -2,42 +2,49 @@ implementation module StdSortList import StdEnv
-:: SortList a = SortList (SortList a, a, SortList a) | Empty
+:: SortList a :== ([a], a)
newSortList :: SortList a
-newSortList = Empty
+newSortList = ([], abort "Empty list")
memberSort :: a (SortList a) -> Bool | Eq, Ord a
-memberSort x Empty = False
-memberSort x (le, el, gr)
-| x == e = True
-| x < el = memberSort x le
-| otherwise = memberSort x gr
+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
-memberSort x Empty = Sortlist (Empty, x, Empty)
-memberSort x (le, el, gr)
+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 ([], _)_ = ([], _)
+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
-removeAll _ _ = Empty
+removeAll :: a (SortList a) -> SortList a | Eq, Ord a
+removeAll _ _ = abort ""
elements :: (SortList a) -> [a]
-elements _ = []
+elements _ = abort ""
count :: (SortList a) -> Int
-count _ = 0
+count _ = abort ""
minimum :: (SortList a) -> a
-minimum _ = 0
+minimum _ = abort ""
maximum :: (SortList a) -> a
-maximum _ = 0
+maximum _ = abort ""
mergeSortList :: (SortList a) (SortList b) -> (SortList a)
-mergeSortList _ _ = Empty
+mergeSortList _ _ = abort ""
Start :: String
Start = newSortList
|