gpt4 book ai didi

haskell - 模式匹配,匹配多个字符

转载 作者:行者123 更新时间:2023-12-04 22:21:12 25 4
gpt4 key购买 nike

如果我有一个接受字符串并返回 int 的函数,我可以使用模式匹配来匹配字符串的第一个字符:

f :: String -> Int
f ('A' : _) = 1
f ('B' : _) = 0
f ('C' : _) = 1
f _ = 2

有没有办法将 A 或 C 合二为一?
就像是:
f :: String -> Int
f ('A'||'C' : _) = 1
f ('B' : _) = 0
f _ = 2

甚至这个(如果有一些计算而不是仅仅返回一个常量,这将是有用的_)
f :: String -> Int
f ('A' : _)
f ('C' : _) = 1
f ('B' : _) = 0
f _ = 2

最佳答案

Haskell 在模式匹配中没有交替。您可以使用递归解决问题:

f :: String -> Int
f ('A' : rest) = f ('C' : rest)
f ('B' : _) = 0
f ('C' : _) = 1
f _ = 2

您可能会考虑使用 guard :
f ('B' : _) = 0
f (x : _) | x `elem` "AC" = 1
f _ = 2

关于haskell - 模式匹配,匹配多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com