如何在Haskell中实现回文函数?

sd2nnvve  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(123)

任务是实现一个回文函数(::String -〉Bool),它检查输入是否为回文。

import Data.List

palindrome :: String -> Bool 
palindrome str
    |str == revstring = True
    |otherwise = False

revstring :: String -> String
revstring str = reverse str

我想我的签名弄错了,但我不知道确切的地方。

kqlmhetl

kqlmhetl1#

str == revstring

等式左边是一个字符串(str),右边是一个函数(revstring),这不可能是对的,我们可以用

str == revstring str

然而,此时我们可以简单地调用reverse,根本不需要定义revstring
然后我们就可以

palindrome :: String -> Bool 
palindrome str
    |str == reverse str = True
    |otherwise = False

但是这仍然是次优的。比较str == reverse str已经产生了我们需要返回的Bool值。不需要使用guards来检查该值,我们可以简单地返回它。

palindrome :: String -> Bool 
palindrome str = str == reverse str

相关问题