我有一个理论问题,一个朋友和我一直试图看,我们怎么做.我们有一个名为的函数palindrome,告诉我们String是否是回文.以下是我们实现它的方式(可能有更好的方法,但这就是我们更喜欢它的方式.)
palindrome :: String -> Bool
palindrome = \x -> (== reverse x) x
Run Code Online (Sandbox Code Playgroud)
我们想要做的是remove我们在这里使用的Lambda,只使用部分应用程序和高阶函数.我们有几个关于如何做到这一点的想法,但它们都没有与我们制作的函数类型相匹配:
palindrome :: String -> Bool
Run Code Online (Sandbox Code Playgroud)
最接近的方法之一是使用合成,但它返回一个函数,它接受两个字符串而不是一个,因为一个用于反向而另一个用于(==):
palindrome = (==) . reverse
Run Code Online (Sandbox Code Playgroud)
也许,我们忘了什么或者我们没有看到什么.为了在不使用Lambda的情况下使用这两个函数,你会怎么做?