如何添加例如[1,2,3]到[5,4,6]返回[6,6,8]这是我到目前为止所拥有的:
func1 :: [Int]->[Int]->[Int]
func1 x y = [a+b|a<-x,b<-y]
Run Code Online (Sandbox Code Playgroud)
我应该尝试删除我不想要的元素,还是有更简单的方法来做到这一点?
J. *_*son 13
你在找zipWith.特别是func1 x y = zipWith (+) x y.你可以"eta reduce"来删除那些额外的参数:func1 = zipWith (+).这是我能想到的最有效的形式.
您当前的方法不起作用,因为[a+b | a <- x, b <- y]形成两个嵌套循环,一个在xes上,一个在ys上.这是列表推导的本质,它基于Set Builder Notation.读它的一种方法是"从X每一个,从y各自B,给我(a + b)",而我们实际上希望通过运行x和y在一起.