【发布时间】:2011-05-16 17:32:13
【问题描述】:
我是 Haskell 的新手,如果这非常明显,我很抱歉...
我制作了以下函数(此处用作询问多个value==something || value==somethingElse 检查的示例)来检查字符是否为数字:
isDigit :: Char -> Bool
isDigit x =
if
x == '0'
|| x == '1'
|| x == '2'
|| x == '3'
|| x == '4'
|| x == '5'
|| x == '6'
|| x == '7'
|| x == '8'
|| x == '9'
then True
else False
当然,尽管必须有一种简洁的方法来编写像上面那样的函数,所以你不必重复|| x ==这么多?
提前感谢您的帮助:)
(如果相关:我使用 Hugs 作为解释器。)
【问题讨论】:
-
由于您是 Haskell 的新手,从您的回答来看,我认为您应该阅读并了解 Haskell 中的模式匹配。
-
@Lagerbaer,什么?你是说守卫?这个问题没有很好地利用模式匹配。
-
也许吧。但是他的第一个解决方案至少可以通过不使用 if ... then 而是使用模式匹配来做得更好。这表明他没有“默认”使用模式匹配,因此这是他应该学习的东西。
-
大声笑,谢谢 Rei。我已经找到并阅读了大量的 learnyouahaskell.com,这绝对是我遇到的关于 Haskell 的最佳解释者。