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