Advertisement
ChristophX86

List2

Apr 30th, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Linked List
  2. data List a = Empty | Data a (List a) deriving (Show, Read, Eq, Ord)
  3.  
  4. -- new List
  5. lnew :: a -> List a
  6. lnew x = Data x Empty
  7.  
  8. -- add Element to end of List
  9. ladd :: (List a) -> a -> List a
  10. ladd Empty x = lnew x
  11. ladd (Data x l) y = Data x (ladd l y)
  12.  
  13. -- add List to end of List
  14. laddl :: (List a) -> (List a) -> List a
  15. laddl Empty l = l
  16. laddl l Empty = l
  17. laddl (Data x1 l1) l2 = Data x1 (laddl l1 l2)
  18.  
  19. -- insert Element alphabetically
  20. lins :: (Ord a) => (List a) -> a -> List a
  21. lins Empty x = lnew x
  22. lins (Data x l) y
  23.     | x == y = Data x (Data y l)
  24.     | x <  y = Data x (lins l y)
  25.     | x >  y = Data y (Data x l)
  26.  
  27. -- List contains Element?
  28. lhas :: (Eq a) => (List a) -> a -> Bool
  29. lhas Empty _ = False
  30. lhas (Data x l) y
  31.     | x == y    = True
  32.     | otherwise = lhas l y
  33.  
  34. -- length of List
  35. llen :: (List a) -> Int
  36. llen Empty = 0
  37. llen (Data _ l) = 1 + (llen l)
  38.  
  39. -- remove Element from List
  40. ldel :: (Eq a) => (List a) -> a -> List a
  41. ldel Empty _ = Empty
  42. ldel (Data x l) y
  43.     | x == y    = l
  44.     | otherwise = Data x (ldel l y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement