在包含至少两个元素pos1
和pos2
的列表中,以下模式匹配有什么问题?
type Pos = (Float, Float)
type Tail = [Pos]
tail_cut : Float -> Tail -> Tail
tail_cut _ [] = []
tail_cut _ [pos] = [pos]
tail_cut cut (pos1:pos2:poss) = [] --line 91
[1 of 1] Compiling Main
Parse error at (line 91, column 19):
unexpected ":"
expecting "::", pattern, whitespace, comma ',' or closing paren ')'
请注意,我没有发布正文,只返回一个空列表以保持片段小。
答案 0 :(得分:4)
在Elm中,cons
定义为::
而不是:
请参阅:http://library.elm-lang.org/catalog/elm-lang-Elm/0.13/List
应该这样做:(pos1::pos2::poss)
答案 1 :(得分:2)
接受的答案不再适用于Elm> = 0.15,不再支持多行函数定义。我已经摆脱了类型以提供更一般的答案。
String AppforUID context.getPackageManager().getNameForUid(UID);
如果您发现第二种模式更具可读性,则可以将其写为tailMatch : a -> List a -> List a
tailMatch el list =
case (el, list) of
(_, []) ->
[]
(_, head :: []) ->
[]
(el, head1 :: head2 :: tail) ->
[]
。