解构榆树​​中的列表列表

时间:2017-11-01 04:42:42

标签: elm

我试图在elm(0.18)中构建列表列表。这是函数调用:

  twoColumns
       [ [ Widget1, Widget2 ]
       , [ Widget3, Widget4 ]
       ]

调用此函数:

twoColumns : List List Widget -> Html Msg
twoColumns listoflists =
   case listoflists of
      listLeft :: listRight :: _ ->
         div []
             [ div [ class "col-md-6" ] (parsingOperation listLeft)
             , div [ class "col-md-6" ] (parsingOperation listRight)
             ]
      _ ->
         div [] [ text "Error" ]

(我们假设parseOptions接受List Widget作为参数。)

这似乎是简单的解构,但我收到了这个错误:

Tag `::` is causing problems in this pattern match.

71|             listLeft :: listRight :: _ ->
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
The pattern matches things of type:

    List a

But the values it will actually be trying to match are:

    List List Widget

有什么想法吗?

注意当我尝试使用模式(listLeft::listRight::_)时,elm-format将其恢复为上面的模式。

1 个答案:

答案 0 :(得分:2)

List List Widget应该是List (List Widget)。因为List List Widget意味着完全不同(而且毫无意义)的事情。但是,这非常有趣,为什么Elm编译器甚至允许List List Widget。我想这是编译器的一个错误。