-- Compute the last element of a list: last :: Eq a => [a] -> a last zs | _ ++ [e] == zs = e where e free -- Is an element member of a list? member :: Eq a => a -> [a] -> Bool member e xs | xs == _ ++ [e] ++ _ = True -- Is a list part of another list? sublist :: Eq a => [a] -> [a] -> Bool sublist xs ys | ys == _ ++ xs ++ _ = True -- Returns some element of a list: someElem :: Eq a => [a] -> a someElem xs | member x xs = x where x free