Я правильно понимаю, что для того, чтобы однозначно определить категорию, нам даже не нужны объекты - достаточно одних морфизмов?
Морфизмы также могут выступать и объектами.
Ниже пример из Бартоша:
Моноид - операция && над Bool, нейтральный элемент - True, потому что:
True && True (as neutral) = True
False && True (as neutral) = False
True (as neutral) && True = True
True (as neutral) && False = False
Морфизмы - это сечения (в терминах Haskell) операции &&:
1) (&& True) - это функция-предикат над Bool
2) (&& False) - также
Затем я выписываю правила их композиции:
1) (&& False) * (&& False) = (&& False)
2) (&& False) * (&& True) = (&& False)
3) (&& True) * (&& False) = (&& False)
4) (&& True) * (&& True) = (&& True)