Не удается раскрыть UnionType

У меня есть два модуля elm, пытающихся совместно использовать тип объединения, поскольку я пытаюсь реорганизовать свое приложение, как описано здесь https://www.elm-tutorial.org/en-v01/02-elm-arch/07-composing-2.html, но я продолжаю получать

не выставляет

хотя я пытался смоделировать это как в https://github.com/elm/elm-lang.org/issues/523

Модуль 1

module Module1 exposing ( OneMsg(..), Model, view, [etc.] )

...

type OneMsg
    = Name String 

...

Модуль 2

module Module2 exposing(..)

import Module1 exposing(OneMsg(..))


type Msg
    = UrlChange Navigation.Location 
    | ...
    | Module1Msg Module1.OneMsg

...

Html.map Module1.OneMsg (Module1.view model)

...

Получение этой ошибки

   -- NAMING ERROR ---------------------------------------------- ././view/View.elm

   Cannot find variable `Module1.OneMsg`.

   74|                     Html.map Module1.OneMsg (Module1.view model)
                                    ^^^^^^^^^^^^^^^^^^
   `Module1` does not expose `OneMsg`.

Единственное, что я нашел здесь, это старые вопросы, которые кажутся одним и тем же событием, хотя и со старым синтаксисом: Доступ к типам объединения вне объявления модуля в Elm

В случае необходимости я использую вяз 0.18.0.

Держу пари, я просто что-то пропустил. Может ли кто-нибудь определить проблему?


person oht    schedule 15.08.2018    source источник
comment
Не могли бы вы показать определение типа OneMsg?   -  person Igor Drozdov    schedule 15.08.2018
comment
Это было там, я просто переименовал его, чтобы разделить вопрос и забыл одно место.   -  person oht    schedule 15.08.2018


Ответы (1)


Module1.OneMsg — это тип. Html.map ожидает функцию в качестве первого параметра. Обычно сообщения всплывают примерно так (в Module2):

type Module2Msg
    = ...
    | Module1Msg Module1.OneMsg

И тогда вы могли бы использовать это так в Module2:

Html.map Module1Msg (Module1.view model)
person Chad Gilbert    schedule 15.08.2018
comment
Извините, забыл включить основное сообщение, которое у меня есть. Отредактировал вопрос, чтобы включить это. - person oht; 15.08.2018
comment
Извините, я не использую имя повторно. Думаю, было бы довольно глупо так поступить. Это был простой копипастный промах. - person oht; 15.08.2018
comment
В этом случае вы должны быть в порядке с Html.map Module1Msg (Module1.view model) (ответ обновлен) - person Chad Gilbert; 15.08.2018
comment
Теперь я это вижу. Html.map Module1.OneMsg (Module1.view model) против Html.map Module1Msg (Module1.view model). Спасибо. - person oht; 15.08.2018