gpt4 book ai didi

haskell - 柯里化(Currying)减法

转载 作者:行者123 更新时间:2023-12-03 06:08:06 26 4
gpt4 key购买 nike

如果我们想要映射一个将范围内的每个元素加 1 的函数,我们可以编写

map (\x -> x + 1) [1..5]

但我想大多数人都会选择

map (+1) [1..5]

相反。但这显然不适用于 (-1),因为它是负数。

所以我首先想到的是

map (+(-1)) [1..5]

考虑到 Prelude 中减法的定义方式(x - y = x + negate y),这是有意义的,但对我来说看起来有点奇怪。然后我想出了

map (flip (-) 1) [1..5]

这对我来说看起来更好,但可能有点太复杂了。

现在我知道这没什么大不了的,但我想知道我是否缺少一种更明显的写法?如果没有,您更喜欢这 2 种方式中的哪一种?我真的只是想问一下,因为通常是这样的小细节使您的代码更加惯用,从而让其他必须阅读它的开发人员感到愉快。

解决方案

既然我得到了几个答案,我想我个人最喜欢的是

map (subtract 1) [1..5]

其次是

map pred [1..5]

主要是因为第一个非常明确,没有人需要猜测/查找 pred 的含义(前身)。

最佳答案

如果您想进行右节减法,可以使用 subtract 函数代替 -:

map (subtract 1) [1..5]

关于haskell - 柯里化(Currying)减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454559/

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