gpt4 book ai didi

haskell - 使用带有 zipWithN 的运算符

转载 作者:行者123 更新时间:2023-12-02 02:49:17 25 4
gpt4 key购买 nike

比如说,我们可以这样写:

zipWith (,) [1,2,3] [4,5,6]

如果我们想要元组 3 列表,我们可以写:
zipWith3 (,,) [1,2,3] [4,5,6] [7,8,9]

我们也可以使用 zipWith4 (,,,) zipWith5(,,,,)等等。

现在,我想做同样的事情,但使用添加而不是逗号运算符。
有没有办法以同样简洁的方式定义它,而不是像在
zipWith3 (\a b c -> a + b + c) [1, 2, 3] [4, 5, 6] [7, 8, 9]

提前感谢您的任何回答。

最佳答案

听起来您想要 \a b c -> a + b + c 的“无点”样式代码.让我们知道,一般来说,\a b c -> a + b + c通常比指向免费代码更可取,因为当您发现错误 4 周后更容易阅读。

有一篇关于无点编程的 wiki 文章 ( source )。

您也可以安装 pointfree包,它可以让您在命令行上解决这些问题。例如,

$ pointfree '\x y z -> x + y + z'
((+) .) 。 (+)

所以((+) .) . (+)是无点版本(x、y 和 z 是“点”,以防您想知道,不,这与几何无关)。如果您愿意,您可以使用该定义,但大多数人会查看您的代码并且不知道那段看起来很有趣的 ASCII 艺术作品应该做什么。他们中的一半会用铅笔和纸来解决,但不是原来的 \x y z -> x + y + z对眼睛更轻松?

提示:如果您需要弄清楚某些免费代码的作用,请查看类型:

前奏> :t ((+) .) 。 (+)
((+) .) 。 (+)::(Num a) => a -> a -> a -> a

或者您可以安装 pointful包,大约是 pointfree 的倒数.

摘要:欢迎来到积分免费编程的世界,谨慎行事,以免您的代码不可读。

关于haskell - 使用带有 zipWithN 的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744799/

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