use*_*396 1 haskell list-comprehension list
我是Haskell的新手,我正在尝试编写一个简单的函数,它接受一个整数列表并返回一个列表,以便将第一个元素添加到列表的所有元素中.
这就是我到目前为止所拥有的.
addFirstEl [] = []
addFirstEl (x:xs) = [x + x | x <- xs]
Run Code Online (Sandbox Code Playgroud)
不幸的是,所有人this都成功地返回了一个没有第一个元素而其他元素被加倍的列表.
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)