【发布时间】:2019-03-19 22:28:19
【问题描述】:
您好,我正在尝试对 通配符 模式进行模式匹配,但我需要“获取”wild card。我正在尝试将 String 解析为 @ 的 list 987654324@.
输入{123,aa,55,66}
输出 [Just 123,Nothing,Just 55.4,Just 66.3]
所以我把方法如下:
方法
readDataRaw::String->[Maybe Int]
readDataRaw (x:xs)=go [] [](x:xs) where
go _ ls [] = ls
go small big (x:xs)= case x of
'}' -> big
',' -> go [] ((readMaybe small::Maybe Int):big) xs
c@(_) -> go [] c:small big xs
错误
parse error on input `->'
|
66 | c@(_) -> go [] c:small big xs
| ^^
在我的最后一种情况下,如何使用 -> 右侧的通配符?
【问题讨论】:
-
虽然您应该使用模式
c而不是c@(_),但后者没有任何问题。上面代码中真正的问题是c@(_)没有缩进为上一行的',',所以被解析为上一行的延续,就好像你写了一行',' -> go [] (....) xs c@(_) -> go [] ...
标签: haskell pattern-matching wildcard