多模式匹配

时间:2018-10-11 06:10:50

标签: haskell pattern-matching

你好,有人可以解释一下我如何在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}{分隔的,。对于}{,我想使用相同的方法。

1 个答案:

答案 0 :(得分:7)

在此特定示例中,您可以使用后卫

f :: Char -> Bool
f x | x `elem` "abc" = someMethod
f _ = someOtherMethod