функтор, аппликатив, монада. Эндофунктор это любой функцтор в программировании так что смысл про него говорить нет. моноид ортогонален, можно без него обойтись
Да, уже есть 2 подхода делать это в стэйбле, либо через plug+unplug для выражения forall T, либо через дефункционализацию. Оба способы - адские костыли и не покрывают общий случай.