我刚刚开始使用Haskell进行函数编程,我想编写一个简短的函数来检查13位代码,并检查它是否是ISBN号。
检查的公式为:
x13 = (10 − ((x1 + 3x2 +x3 + 3x4 +x5 + 3x6 +x7 + 3x8 +x9 + 3x10 +x11 + 3x12)%10))%10
({x1
是第一位数字,x2
是第二位数字,...,x13
是最后一位数字等)
我希望输入是一个列表,以便对我来说更容易(13个整数,每个0-9)。
所以像这样(下面的东西简化了):
isValid :: [Int] -> Bool
--isValid = True if (lastdigit = formula) -- can this be done in one (long) line?
例如,
isValid [ 9,7,8,1,3,5,4,6,9 ]
应返回True
我已经尝试了几个小时,但是我在Haskell上还不够好,这让我感到困惑。有人可以指出我正确的方向吗?我对Haskell不太了解,这是主要问题。