module ProjectM36.MiscUtils where

--returns duplicates of a pre-sorted list
dupes :: Eq a => [a] -> [a]
dupes [] = []
dupes [_] = []
dupes [x,y] = [x | x == y]
dupes (x:y:xs) = dupes(x:[y]) ++ dupes(y : xs)

--Data.Vector.indexed but for lists
indexed :: [a] -> [(Int, a)]
indexed = go 0
  where
    go _ [] = []
    go i (v:ys) = (i,v):go (i+1) ys