Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Linked List
- data List a = Empty | Data a (List a) deriving (Show, Read, Eq, Ord)
- -- new List
- lnew :: a -> List a
- lnew x = Data x Empty
- -- add Element to end of List
- ladd :: (List a) -> a -> List a
- ladd Empty x = lnew x
- ladd (Data x l) y = Data x (ladd l y)
- -- add List to end of List
- laddl :: (List a) -> (List a) -> List a
- laddl Empty l = l
- laddl l Empty = l
- laddl (Data x1 l1) l2 = Data x1 (laddl l1 l2)
- -- insert Element alphabetically
- lins :: (Ord a) => (List a) -> a -> List a
- lins Empty x = lnew x
- lins (Data x l) y
- | x == y = Data x (Data y l)
- | x < y = Data x (lins l y)
- | x > y = Data y (Data x l)
- -- List contains Element?
- lhas :: (Eq a) => (List a) -> a -> Bool
- lhas Empty _ = False
- lhas (Data x l) y
- | x == y = True
- | otherwise = lhas l y
- -- length of List
- llen :: (List a) -> Int
- llen Empty = 0
- llen (Data _ l) = 1 + (llen l)
- -- remove Element from List
- ldel :: (Eq a) => (List a) -> a -> List a
- ldel Empty _ = Empty
- ldel (Data x l) y
- | x == y = l
- | otherwise = Data x (ldel l y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement