packages feed

alpha-0.9.9.5: src/My/Data/List.hs

module My.Data.List(module Data.List,classesBy,nubOrd,sums,zipRest) where

import Data.List

nubOrd :: Ord a => [a] -> [a]
nubOrd = map head . group . sort

classesBy :: (a -> a -> Bool) -> [a] -> [[a]]
classesBy (==) []    = []
classesBy (==) (e:l) = let (x,t) = partition (e==) l in (e:x):classesBy (==) t

sums :: Num a => [a] -> [a]
sums = scanl (+) 0

zipRest l l' = (zip l l',drop (length l) l')