Haskell 计算一个数字是否是回文

Haskell 计算一个数字是否是回文,haskell,Haskell,我在Haskell相对较新,我不知道为什么它不能编译。我要做的是创建一个函数,通过创建一个辅助函数来检查字符串形式的数字是否是回文。谢谢 isPalindrome :: [Char] -> Bool isPalindrome s = (helper . Char.digitToInt) s where helper [] = True helper [x] = True helper (x:xs) = x == (last xs) &

我在Haskell相对较新,我不知道为什么它不能编译。我要做的是创建一个函数,通过创建一个辅助函数来检查字符串形式的数字是否是回文。谢谢

isPalindrome :: [Char] -> Bool
isPalindrome s = (helper . Char.digitToInt) s
    where helper [] = True
          helper [x] = True
          helper (x:xs) = x == (last xs) && (helper . init) xs
错误:

euler.hs:29:28: error:
• Couldn't match type ‘Int’ with ‘[a0]’
  Expected type: Char -> [a0]
    Actual type: Char -> Int
• In the second argument of ‘(.)’, namely ‘Char.digitToInt’
  In the expression: helper . Char.digitToInt
  In the expression: (helper . Char.digitToInt) s
euler.hs:29:45: error:
• Couldn't match expected type ‘Char’ with actual type ‘[Char]’
• In the first argument of ‘helper . Char.digitToInt’, namely ‘s’
  In the expression: (helper . Char.digitToInt) s
  In an equation for ‘isPalindrome’:
      isPalindrome s
        = (helper . Char.digitToInt) s
        where
            helper [] = True
            helper [x] = True
            helper (x : xs) = x == (last xs) && (helper . init) xs

它不编译,因为
digitToInt
接受
Char
并返回
Int


您正在给它一个列表(
s::[Char]
),并将结果作为另一个列表处理(
helper
获取一个列表)。

它没有编译,因为
digitToInt
获取一个
Char
并返回一个
Int


您正在给它一个列表(
s::[Char]
),并将结果视为另一个列表(
helper
获取一个列表)。

啊,我明白了!添加地图似乎解决了这个问题。感谢您的快速回复!:)@Ben为什么要将字符转换为
Int
s,而首先比较字符是完全可以接受的?换句话说,如果您已经有了数字的字符串表示形式,那么检查该字符串是否为回文就足够了。@Ben现在您已经了解了这种情况,我建议您再次仔细阅读错误消息。我想你会发现这是非常清楚的(如果有点冗长的话),而且你会一次又一次地遇到这种错误。还要确保将此问题标记为answered@ThomasM.DuBuisson我明白你的意思。我真的没有理由把字符转换成整数。我正在解决Euler项目的问题,其中一个要求是检查一个数字是否是回文。我想我没有意识到在这种情况下转换是不必要的。谢谢你指出这一点!啊,我明白了!添加地图似乎解决了这个问题。感谢您的快速回复!:)@Ben为什么要将字符转换为
Int
s,而首先比较字符是完全可以接受的?换句话说,如果您已经有了数字的字符串表示形式,那么检查该字符串是否为回文就足够了。@Ben现在您已经了解了这种情况,我建议您再次仔细阅读错误消息。我想你会发现这是非常清楚的(如果有点冗长的话),而且你会一次又一次地遇到这种错误。还要确保将此问题标记为answered@ThomasM.DuBuisson我明白你的意思。我真的没有理由把字符转换成整数。我正在解决Euler项目的问题,其中一个要求是检查一个数字是否是回文。我想我没有意识到在这种情况下转换是不必要的。谢谢你指出这一点!