Я часто пишу код по шаблону:
foo xs = map snd $ filter ((< 10).fst) $ zip xs [0..]
bar ys = map snd $ sortBy (compare `on` fst) $ zip ys [0..]
Теперь я хочу отвлечь это.
foo = indexesOf (filter (<10))
bar = indexesOf sort
indexesOf :: ([a] -> [a]) -> [a] -> [Int]
indexesOf f xs = map snd $ magick $ zip xs [0..] where
magick = undefined
Как выполнить magick
?