gpt4 book ai didi

Haskell 否定函数

转载 作者:行者123 更新时间:2023-12-02 11:14:07 26 4
gpt4 key购买 nike

这是我的任务:编写一个函数:

onlyDigits :: String -> String

从字符串中删除所有非数字字符(例如,onlyDigits "ac245d62"是“24562”)。

我有这个:

onlyDigits :: String -> String
onlyDigits a = [ (not)isAlpha b | b <- a ]

但是我无法编译它

谁能看出我哪里出了问题吗?

最佳答案

通过写作

(not) isAlpha b

您将 not 应用于两个参数 isAlphab,这可能就是编译器提示的原因。

如果你修正了这个小错误,现在写:

onlyDigits :: String -> String
onlyDigits a = [ not (isAlpha b) | b <- a ]

您仍然会收到错误,因为这会创建一个 Bool 列表!

<小时/>

您可能想要的是:

onlyDigits :: String -> String
onlyDigits a = [ b | b <- a, not $ isAlpha b ]

这将获取 a 中满足条件 not (isAlpha b) 的所有元素 b

您还可以使用filter函数并拥有无点函数:

onlyDigits :: String -> String
onlyDigits = filter (not.isAlpha)

或者更好:

onlyDigits :: String -> String
onlyDigits = filter isDigit

只保留数字!

关于Haskell 否定函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169521/

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