даже если твой язык детектировал проблему при его расширении, он оказывается в ситуации "split", когда одна изначальная сущность Expr должна быть разбита на две - Expr и CommutativeExpr
почему это произошло? потому что enum описывает контракт как "одно из", а не как "множество допустимых операций" допустима любая операция, применимая ко всем элементам enum
почему это произошло? потому что enum описывает контракт как "одно из", а не как "множество допустимых операций" допустима любая операция, применимая ко всем элементам enum
у тебя есть контракт экспрешна и контракт тех кто его обрабатывает. Если ты сильно поменял семантику то их НАДО ломать