任务是实现一个回文函数(::String -〉Bool),它检查输入是否为回文。
import Data.List palindrome :: String -> Bool palindrome str |str == revstring = True |otherwise = False revstring :: String -> String revstring str = reverse str
我想我的签名弄错了,但我不知道确切的地方。
kqlmhetl1#
str == revstring
等式左边是一个字符串(str),右边是一个函数(revstring),这不可能是对的,我们可以用
str
revstring
str == revstring str
然而,此时我们可以简单地调用reverse,根本不需要定义revstring。然后我们就可以
reverse
palindrome :: String -> Bool palindrome str |str == reverse str = True |otherwise = False
但是这仍然是次优的。比较str == reverse str已经产生了我们需要返回的Bool值。不需要使用guards来检查该值,我们可以简单地返回它。
str == reverse str
Bool
palindrome :: String -> Bool palindrome str = str == reverse str
1条答案
按热度按时间kqlmhetl1#
等式左边是一个字符串(
str
),右边是一个函数(revstring
),这不可能是对的,我们可以用然而,此时我们可以简单地调用
reverse
,根本不需要定义revstring
。然后我们就可以
但是这仍然是次优的。比较
str == reverse str
已经产生了我们需要返回的Bool
值。不需要使用guards来检查该值,我们可以简单地返回它。