module ProjectM36.MiscUtils where
dupes :: Eq a => [a] -> [a]
dupes :: forall a. Eq a => [a] -> [a]
dupes [] = []
dupes [a
_] = []
dupes [a
x,a
y] = [a
x | a
x forall a. Eq a => a -> a -> Bool
== a
y]
dupes (a
x:a
y:[a]
xs) = forall a. Eq a => [a] -> [a]
dupes(a
xforall a. a -> [a] -> [a]
:[a
y]) forall a. [a] -> [a] -> [a]
++ forall a. Eq a => [a] -> [a]
dupes(a
y forall a. a -> [a] -> [a]
: [a]
xs)
indexed :: [a] -> [(Int, a)]
indexed :: forall a. [a] -> [(Int, a)]
indexed = forall {t} {b}. Num t => t -> [b] -> [(t, b)]
go Int
0
where
go :: t -> [b] -> [(t, b)]
go t
_ [] = []
go t
i (b
v:[b]
ys) = (t
i,b
v)forall a. a -> [a] -> [a]
:t -> [b] -> [(t, b)]
go (t
iforall a. Num a => a -> a -> a
+t
1) [b]
ys