Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- intervals :: (Eq a, Enum a) => [a] -> [(a, Maybe a)]
- intervals [] = []
- intervals (x:[]) = [(x, Nothing)]
- intervals (x:xs) = (x, lastSuccessor x x xs) : intervals (dropSuccessors x xs)
- where
- lastSuccessor :: (Eq a, Enum a) => a -> a -> [a] -> Maybe a
- lastSuccessor l x []
- | l == x = Nothing
- | otherwise = Just x
- lastSuccessor l x (y:ys)
- | succ x == y = lastSuccessor l y ys
- | otherwise = lastSuccessor l x []
- dropSuccessors :: (Eq a, Enum a) => a -> [a] -> [a]
- dropSuccessors x [] = []
- dropSuccessors x done@(y:ys)
- | succ x == y = dropSuccessors y ys
- | otherwise = done
Add Comment
Please, Sign In to add comment