import Foundation final class Store: ObservableObject { @Published private(set) var state: State private let reducer: Reducer init(initialState: State, reducer: @escaping Reducer) { self.state = initialState self.reducer = reducer } func send(_ action: Action) { reducer(&state, action) } } typealias Reducer = (inout State, Action) -> Void