gpt4 book ai didi

haskell - 我将如何以无点风格重写这个回文验证器?

转载 作者:行者123 更新时间:2023-12-04 16:44:45 27 4
gpt4 key购买 nike

我有这段代码:

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

有没有办法以无点风格重写它?

最佳答案

是的,因为任何函数都可以用无点风格编写。这里是 (->) r 的 Applicative 实例(又名读者)为你做这件事,因为

(f <*> g) x = f x (g x)

您可能会认为这是来自 SKI calculus 的 S 组合子( return 顺便说一下是K)。

你的回文检查器写成
x == reverse x

以中缀形式读取
(==) x (reverse x)

并与 <*> 相比上面的定义导致表达式
isPalindrome x = ((==) <*> reverse) x

您可以在其中删除尾随 x 以获得解决方案
isPalindrome = (==) <*> reverse

这可能比原始表达式可读性差,因此不应使用。无点样式是为了可读性,并且仅在特定情况下有用。

关于haskell - 我将如何以无点风格重写这个回文验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349423/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com