Elm 如何迭代列表(可能是一个)

Elm 如何迭代列表(可能是一个),elm,Elm,我有以下图形结果: [Just{details=Just”发动机在33秒时发生故障,并失去 车辆”,发布年份=仅“2006”,链接=仅{文章链接= 只是 "" },mission_name=Just“FalconSat”}] 基于以下类型: type alias Launch = { mission_name : Maybe String , details : Maybe String , launch_year : Maybe String , links :

我有以下图形结果:

[Just{details=Just”发动机在33秒时发生故障,并失去 车辆”,发布年份=仅“2006”,链接=仅{文章链接= 只是 "" },mission_name=Just“FalconSat”}]

基于以下类型:

type alias Launch =
    { mission_name : Maybe String
    , details : Maybe String
    , launch_year : Maybe String
    , links : Maybe LaunchLinks
    }


type alias Launches =
    Maybe (List (Maybe Launch))


type alias LaunchLinks =
    { article_link : Maybe String
    }
我想通过List.map浏览并在无序列表中显示结果。我从这个开始:

renderLaunch : Launches -> Html Msg
renderLaunch launches =
    div [] <|
        case launches of
            Nothing ->
                [ text "Nothing here" ]

            Just launch ->
                launch
                    |> List.map (\x -> x)
                    |> ul []
但是(|>)管道化是否是一个期望:

List (Html msg)

问题是,
Just-launch
案例需要生成一个
列表(Html-msg)
,但是代码会返回不同的类型

当您使用
List.map(\x->x)
时,它本质上是禁止操作的。您正在迭代
列表(可能启动)
,并返回相同的内容。我建议创建另一个函数,该函数接受
可能启动
值,并将其用作映射函数。例如:

displayLaunch:Maybe Launch->Html Msg
显示发射发射=
案件启动
无->文本“无启动”
只需l->text(Debug.toString l)
现在,您可以将其插入映射函数:

刚刚启动->
发射
|>List.map显示启动
|>ul[]
但是,哎呀!现在,您将看到一个新错误,指示:

The 2nd branch is:

    Html Msg

But all the previous branches result in:

    List (Html msg)
这里的问题是,我们现在从
Just launch
分支返回
ul
,我们需要返回一个html列表。您可以使用
List.singleton
创建仅包含一项的列表:

刚刚启动->
发射
|>List.map显示启动
|>ul[]
|>单身汉
The 2nd branch is:

    Html Msg

But all the previous branches result in:

    List (Html msg)