Хаскель — один из самых удобных языков для построения и использования обобщённого кода.
Сделать абстрактный тип на нём не стоит совершенно ничего, и более того, это даже предпочтительнее, поскольку обобщённый код имеет минимум зависимостей. В сущности, он имеет только те зависимости, которые необходимы.
Постарайся сделать типы наподобие Foldable, Traversable и код сразу очистится от ненужных деталей.
ок, сделаю. при чем в лучших традициях хаскеля - нечитабельных операторах.