gpt4 book ai didi

haskell - 用 Haskell 编写 Zipwith

转载 作者:行者123 更新时间:2023-12-02 15:34:51 28 4
gpt4 key购买 nike

我正在尝试在 Haskell 中编写 Zipwith 函数。

如果我使用以下值运行它,它应该返回以下结果:

Prelude> zipWith (+) [10,20,30] [33,44,94]
[43,64,124]

到目前为止我的代码是:

Zipwith f [] [] = []
Zipwith f [] _ = []
Zipwith f _ [] = []
Zipwith f (x:xs) (y:ys) = (f x y) : (Zipwith f xs ys)

然而,编译器告诉我,我有多个函数,全部都是 Zipwith,它们没有数据定义,但我认为在 Haskell 中没有必要有一个。另外,然后它说我有多个 f 声明,但这只是一个参数,我认为参数有多个定义并不重要。

有什么想法吗?

最佳答案

Haskell 函数必须以小写字母开头。大写名称是为其他内容保留的,例如数据类型。在这种情况下,最好将函数命名为 zipWith' ,因为'常用于表示功能几乎相同,但有微小变化。

附注

对代码的一点批评:您可以删除行 zipwith f [] [] = []因为其他线路已经捕获了这种情况。如果你愿意,你甚至可以这样写:

zipwith f (x:xs) (y:ys) = f x y : zipwith f xs ys
zipwith _ _ _ = []

因为第一个是您唯一关心的模式。

关于haskell - 用 Haskell 编写 Zipwith,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588785/

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