Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Haskell在列表方面遇到了麻烦_List_Haskell_List Comprehension - Fatal编程技术网

List Haskell在列表方面遇到了麻烦

List Haskell在列表方面遇到了麻烦,list,haskell,list-comprehension,List,Haskell,List Comprehension,我是Haskell的新手,我正在尝试编写一个简单的函数,它接受一个整数列表并返回一个列表,这样第一个元素就会添加到列表的所有元素中 这就是我目前所拥有的 addFirstEl [] = [] addFirstEl (x:xs) = [x + x | x <- xs] addFirstEl[]=[] addFirstEl(x:xs)=[x+x | x列表理解中x的绑定正在隐藏模式中的变量x。请尝试以下操作: addFirstEl [] = [] addFirstEl (x1:xs) = [

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

这就是我目前所拥有的

addFirstEl [] = []
addFirstEl (x:xs) = [x + x | x <- xs]
addFirstEl[]=[]

addFirstEl(x:xs)=[x+x | x列表理解中
x
的绑定正在隐藏模式中的变量
x
。请尝试以下操作:

addFirstEl [] = []
addFirstEl (x1:xs) = [x1 + x2 | x2 <- xs]
或者在
头部方面

addFirstEl [] = []
addFirstEl xs = [head xs + x | x <- xs]
addFirstEl[]=[]

addFirstEl xs=[head xs+x | x列表理解中的
x
绑定正在隐藏模式中的变量
x
。请尝试以下操作:

addFirstEl [] = []
addFirstEl (x1:xs) = [x1 + x2 | x2 <- xs]
或者在
头部方面

addFirstEl [] = []
addFirstEl xs = [head xs + x | x <- xs]
addFirstEl[]=[]
addFirstEl xs=[head xs+x | x试试这个:

addFirstEl [] = []
addFirstEl l@(x:_) = [x + x1 | x1 <- l ]
试试这个:

addFirstEl [] = []
addFirstEl l@(x:_) = [x + x1 | x1 <- l ]

只需为
xs
中的元素使用不同的名称,谢谢!但是,第一个元素仍然会从返回的列表中删除。只需为
xs
中的元素使用不同的名称,谢谢!但是,第一个元素仍然会从返回的列表中删除。我非常喜欢
head xs
版本,因为它清楚地表达了相反,@AlainO'Dea
head
是一个部分操作,因此每次使用
head
都会给程序员增加负担——即证明其参数不为空。相比之下,第一个解决方案不需要任何证明,因此可以说更容易安全地使用。@chi
xs
是非空的,这是因为上面的空xs有一个单独的例子。@Cubic:而且如果
xs
是空的,
头xs+x
部分永远不会被执行。当然,在这种情况下,证明是微不足道的。不过,提供微不足道的证明比不提供任何证明更难。在一般情况下证明可能非常重要,标准类型检查之外的工具可能有助于确定正确性,例如,我非常喜欢
head xs
版本,因为它清楚地表达了意图。@AlainO'Dea另一方面
head
是一个局部操作,因此每次使用
head
都会给程序员增加负担,即对prove证明它的参数不是空的。相比之下,第一个解决方案不需要任何证明,因此可以说更容易安全地使用。@chi证明
xs
非空的原因很简单,因为上面有一个单独的空xs的例子。@Cubic:而且
头xs+x
部分不会是空的如果
xs
为空,则可以执行ver。当然,在这种情况下,证明是微不足道的。但是,提供微不足道的证明比根本不提供任何证明更难。在一般情况下,证明可能是不微不足道的,标准类型检查之外的工具可能有助于确定正确性,例如。