sealed class TodoAction : Action sealed class TodoListAction : TodoAction() object LoadTodos : TodoListAction() sealed class TodoDetailAction : TodoAction() data class GetTodo(val id: Int) : TodoDetailAction() ----- fun interface Reducer { operator fun invoke(state: S, action: A): S } ---- val TodoReducer: Reducer = Reducer { state, action -> when(action) { is LoadTodos -> state } } ---- val a: Reducer = TodoReducer //Error: Type mismatch. Required: Reducer Found: Reducer