haskell中lambda函数的应用?

haskell中lambda函数的应用?,haskell,lambda,quickcheck,Haskell,Lambda,Quickcheck,要测试此代码: -- | this function checks if string or list are a palindrome isPalindrome :: (Eq a) => [a] -> Bool isPalindrome x = if reverse x == x then True else False 我设法写了这样一篇文章: -- | how do I remove ugly p

要测试此代码:

-- | this function checks if string or list are a palindrome
    isPalindrome :: (Eq a) => [a] -> Bool
    isPalindrome x =
        if reverse x == x
            then True
            else False
我设法写了这样一篇文章:

-- | how do I remove ugly parentheses our of here?
palindromeTest verb = isPalindrome ((\verb -> verb ++ reverse verb) verb )  == True
    where types = verb::String
括号看起来很恶心,我该如何计算它们呢?

回文测试
你的表情:

(\verb -> verb ++ reverse verb) verb
没有多大意义:等效表达式为:

(\x -> x ++ reverse x) verb
因为lambda表达式中的
动词
是局部作用域。但是你知道什么是
x
:它是
动词。因此,可以将表达式替换为:

verb ++ reverse verb
或全部:

palindromeTest verb = isPalindrome (verb ++ reverse verb) == True
最后,
where types=verb::String
也是无用的:Haskell是静态类型,类型在编译时解析。所以这句话没有添加任何内容。您可以在函数的类型签名中限制动词的类型:

palindromeTest :: String -> Bool
palindromeTest verb = isPalindrome (verb ++ reverse verb)
您可以使用
ap
使其更加紧凑:

import Control.Monad(ap)

-- | this function checks if string or list are a palindrome
isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome = ap (==) reverse
import Control.Monad(ap)
--|此函数检查字符串或列表是否为回文
isPalindrome::(等式a)=>[a]->Bool

isPalindrome=ap(=)反向
类型适用于QuickCheck@kaboom:这没关系:quicktest没什么特别的:它也会创建一个Haskell可执行文件,所以它也会通过编译器。werid,根据QuickCheck教程,我觉得它是必需的。无论如何,谢谢@kaboom:你能告诉我这是在教程中写的吗?
-- | this function checks if string or list are a palindrome
isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome x = reverse x == x
import Control.Monad(ap)

-- | this function checks if string or list are a palindrome
isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome = ap (==) reverse