Elm中至少有两个元素的列表上的模式匹配

Elm中至少有两个元素的列表上的模式匹配,elm,Elm,在至少有两个元素pos1和pos2的列表上进行以下模式匹配有什么问题 请注意,我没有发布正文,只是返回一个空列表以保持片段较小。在Elm中,cons的定义是::而不是: 见: 这应该可以做到:pos1::pos2::poss接受的答案对于Elm>=0.15不再有效,因为它不再支持多行函数定义。我已经去掉了这些类型,以提供更一般的答案 tailMatch : a -> List a -> List a tailMatch el list = case (el, list) of

在至少有两个元素pos1和pos2的列表上进行以下模式匹配有什么问题

请注意,我没有发布正文,只是返回一个空列表以保持片段较小。

在Elm中,cons的定义是::而不是:

见:


这应该可以做到:pos1::pos2::poss

接受的答案对于Elm>=0.15不再有效,因为它不再支持多行函数定义。我已经去掉了这些类型,以提供更一般的答案

tailMatch : a -> List a -> List a
tailMatch el list =
  case (el, list) of
    (_, []) -> 
      []
    (_, head :: []) ->
      []
    (el, head1 :: head2 :: tail) ->
      []
如果您觉得第二个模式更可读,那么可以将其写为,[head]->。

请注意Elm多行函数定义。
tailMatch : a -> List a -> List a
tailMatch el list =
  case (el, list) of
    (_, []) -> 
      []
    (_, head :: []) ->
      []
    (el, head1 :: head2 :: tail) ->
      []