Ну, для кого как, допустим в моей архитектуре есть модель, которая является структурой и функция update, которая обрабатывает ивенты и при каждом ивенте меняет модель, с возможностью выстреливать ивенты из ивентов, что-то на подобии
update (event: Event, model: Model) -> (Model, [Event])
И внутри update такой большой switch со всеми ивентами, а сами ивенты это enum:
enum Event {
case Inc
case Dec
case SetCounterValue (Int)
}