gpt4 book ai didi

haskell - 列表第一项和最后一项的模式匹配

转载 作者:行者123 更新时间:2023-12-01 07:55:35 26 4
gpt4 key购买 nike

是否可以模式匹配“以 f 开头”,然后是任何文本,“以 b 结尾”?

我试过:

f :: String -> Bool
f ('f':xs:'b') = True
f _ = False

但我得到了一个错误:
explore/PatternMatching.hs:2:11:
Couldn't match expected type ‘[Char]’ with actual type ‘Char’
In the pattern: 'b'
In the pattern: xs : 'b'
In the pattern: 'f' : xs : 'b'
Failed, modules loaded: none.

最佳答案

如果没有模式匹配语言扩展,就没有简单的方法可以做到这一点。我会把它写成:

f :: String -> Bool
f str = case (take 1 str, drop (length str - 1) str) of
("f", "b") -> True
otherwise -> False

(使用 takedrop 来避免特殊处理空字符串的情况,这在使用时可能会导致错误,例如 head!! )
Prelude> f "flub"
True
Prelude> f "foo"
False
Prelude> f "fb"
True
Prelude> f "fbbbb"
True
Prelude> f "fbbbbf"
False
Prelude> f ""
False

关于haskell - 列表第一项和最后一项的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534612/

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