list - Haskell 函数将列表中的元素相乘

标签 list haskell

dobb[] = []
dobb (x:xs) = [x * 2| x<- xs]

我对 Haskell 非常陌生,本周开始学习它。我想创建一个函数,将列表中的每个元素乘以 2。因此列表将从 [1,2,3] 到 [2,4,6]。我的代码工作正常,只是它跳过列表的第一个元素并从 [1,2,3] 到 [4,6]。如何使代码也乘以第一个元素?

[x*2 | x<-[1..5]]

我发现这一行可以实现我正在寻找的功能,但我不明白如何从这行代码开始并将其转换为适用于所有列表的函数。

最佳答案

我会回答你的最后一个问题,

how to go from this line of code,

      [x*2 | x <- [1..5]]

and convert it to a function that works for all lists[?]

这称为泛化,是通过抽象来实现的。首先我们命名它,

foo = [x*2 | x <- [1..5]]

然后我们命名我们用作示例的任意数据片段,

foo = let {xs = [1..5]} in [x*2 | x <- xs]

然后我们通过删除内部定义中的任意数据来对其进行抽象,让它成为函数参数,现在由它指定,函数的调用者:

foo        xs           =  [x*2 | x <- xs]

就是这样,通用函数适用于所有列表,执行与我们首先使用的特定示例相同的操作。

关于list - Haskell 函数将列表中的元素相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68957192/

相关文章:

python - 当其中一些项目也是列表时,如何对列表中的项目求和?

haskell - 如何漂亮地打印记录类型?

haskell - 如何读取大的csv文件?

haskell - 这个 Haskell 代码会占用太多内存吗?

parsing - 解析二叉树(读取 a,显示 a)

xml - 在 PowerShell 中,如何让 XML 内部子项填充其父级并将其格式化为表格?

java - 使用Swing的JList

python - 我想从数据框中的行创建值列表,并删除前 2 个元素

haskell - 终端输出不可见

python - 使用 zip 将列表中的值 append 到另一个列表中