Почему это toUpper в Hask? Ну и forall'а, конечно, внутри Char не будет никакого. Если занудствовать, то есть два естественных способа построить категорию термов: "денотационную" и "аксиоматическую".
В денотационной у тебя в качестве термов будет боттом, нуль-арные конструкторы, а также их комбинации под конструкторами более высокой арности (например объект Just _|_). Это будет характерный для боттомов порядок.
Для аксиоматической объектами будут все типизирующиеся термы, а стрелки -- редукции из одного терма в другой.
Может я ошибаюсь, но хз у кого спросить