我将从一个例子开始(我认为它将显示我的问题)
switch 1 2 [[1,2,3,4],[5,6,0,7]] -> [[1,2,0,4],[5,6,3,7]]
[[1,2,3,4],[5,6,0,7]] !! 1 !! 2是零元素。第一个整数始终为1,第二个整数介于0和3之间,我想通过索引(来自第二个组件列表)将第一个组件列表中相同位置的元素作为参数更改。 / p>
我知道列表在Haskell中是不可变的,但是我仍然无法弄明白。
我该怎么做?
答案 0 :(得分:4)
switch _ n [xs,ys] = [xs',ys']
where (xs',ys',_) = unzip3 $
map (\t@(x,y,m) -> if m==n then (y,x,m) else t) $
zip3 xs ys [0..]
答案 1 :(得分:2)
switch i j l = [a,b]
where (a,b) = unzip [if j==n then (l!!1!!n, l!!0!!n) else (l!!0!!n,l!!1!!n) | n<-[0..3]]
第一个整数是无用的