Haskell列表问题

use*_*396 1 haskell list-comprehension list

我是Haskell的新手,我正在尝试编写一个简单的函数,它接受一个整数列表并返回一个列表,以便将第一个元素添加到列表的所有元素中.

这就是我到目前为止所拥有的.

addFirstEl [] = []
addFirstEl (x:xs) = [x + x | x <- xs]
Run Code Online (Sandbox Code Playgroud)

不幸的是,所有人this都成功地返回了一个没有第一个元素而其他元素被加倍的列表.

Cir*_*dec 6

x列表理解中的绑定是将变量隐藏x在模式中.试试这个:

addFirstEl [] = []
addFirstEl (x1:xs) = [x1 + x2 | x2 <- xs]
Run Code Online (Sandbox Code Playgroud)

编辑

在回应你的评论

第一个元素仍然从返回的列表中删除

(x1:xs),xs是剩余或tail列表.这是后面的所有元素x1,即head.如果你想添加x1到包括它自己在内的所有元素,你可以写

addFirstEl [] = []
addFirstEl (x1:xs) = [x1 + x2 | x2 <- (x1:xs)]
Run Code Online (Sandbox Code Playgroud)

或者就此而言 head

addFirstEl [] = []
addFirstEl xs = [head xs + x | x <- xs]
Run Code Online (Sandbox Code Playgroud)