Стандартный способ использования модели и обновления в Elm - определить типы Model и Msg и функцию обновления:
type alias Model = { ... }
type Msg = Msg1 | Msg2 | ...
update : Msg -> Model -> (Model, Cmd Msg)
...
Когда приложение растет, все эти типы и функции становятся более сложными. Я бы хотел разделить их следующим образом:
type alias Model1 = { ... }
type alias Model2 = { ... }
type alias Model = { model1 : Model1, model2 : Model2 }
type Msg1 = Msg1a | Msg1b | ...
type Msg2 = Msg2a | Msg2b | ...
type Msg = M1 Msg1 | M2 Msg2 | ...
Тогда я бы хотел обрабатывать их все по отдельности (и я знаю, как это сделать).
У меня проблема с функцией просмотра. Я определяю свою точку зрения следующим образом:
view : Model -> Html Msg
view model =
let v1 = view1 model.model1
...
in ...
view1 : Model1 -> Html Msg1
view1 model = ...
Проблема в том, что результат view1 равен Html Msg1
, а функция вида нуждается в Html Msg
.
Есть ли способ преобразовать результат из Html Msg1
в Html Msg
?