你好,有人可以解释一下我如何在haskell中执行以下操作:
f :: Char -> Bool
f 'a' = someMethod
f 'b' = someMethod
f 'c' = someMethod
f _ = someOtherMethod
我能以某种方式类似于@
模式吗?
f :: Char -> Bool
f x@(pattern1 || pattern2 ...pattern n) = sameMethod x
基本上我想对多个模式应用相同的方法。这可能吗?我不想编写基本上完成相同操作的N个模式匹配行。
PS 我要实现的方法如下:
readContent::String->Maybe [Double]
readContent (x:xs)=go [] [](x:xs) where
go _ ls [] =if length length ls > 0 then Just ls else Nothing
go small big (x:xs)= case x of
'}' -> Just (small:big) -- i want some other pattern here too
',' -> go [] small:big xs
t@(_) -> go t:small big xs
我正在解析可由String
,}
和{
分隔的,
。对于}
和{
,我想使用相同的方法。
答案 0 :(得分:7)
在此特定示例中,您可以使用后卫:
f :: Char -> Bool
f x | x `elem` "abc" = someMethod
f _ = someOtherMethod