В хаскеле так много спископодобных типов ByteString строгие и ленивые, Text, Vector, Array, [] и может еще куча всего. А есть ли тайпкласс унифицирующий работу с последовательностями массиво-спископодобного типа ?
class ListLike (l a) where
take :: Int -> (l a) -> (l a)
drop :: Int -> (l a) -> (l a)
(!) :: (l a) -> Int -> a
filter ....
Не знаю что еще можно включить в этот тайпкласс, filter есть в функторе, а foldl в Foldable. Такое обилие дублирующихся функций, да еще и тайпклассов со схожим назначением меня так напрягает ...