From 61948c672d3a98027383e4bcc6b95d2db492f974 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Tue, 3 Mar 2015 12:09:15 +0100 Subject: StdSet werkend --- week3/mart/StdSortList.icl | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'week3') 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 -- cgit v1.2.3