Существует очень хорошая прагматическая причина, по которой «стандартный» Haskell (Prelude + base +, возможно, еще немного) не использует больше полиморфизма:
Проектирование классов типов общего назначения: hard . Хорошие проекты для классов, которые абстрагируются над типами контейнеров, такими как списки, массивы и «строки байтов» (лично я на самом деле не считаю Bytestring контейнером), не плавают в ожидании включения в Haskell 2012. Есть некоторые проекты, например Listlike и Занятия по Эдисону и ряд людей решили эту проблему, но, за исключением Foldable и Traversable, никто не создал убедительных дизайнов.