将元组列表附加在一起

时间:2015-11-15 09:58:33

标签: list haskell

我有一个在Haskell中看起来像这样的元组列表:

([],[[]],[])

我想在这些列表上执行一些操作,并将所有可能的状态更改返回到它们上面。我想返回一个这个元组的列表,我不太确定如何将它们绑定在一起。当我尝试使用cons或++时,我遇到了一些错误。

([],[[]],[]):([],[[]],[])
([],[[]],[])++([],[[]],[])

<interactive>:81:1:
Couldn't match expected type ‘[a]’
            with actual type ‘([t0], [t1], [t2])’
Relevant bindings include it :: [a] (bound at <interactive>:81:1)
In the first argument of ‘(++)’, namely ‘([], [], [])’
In the expression: ([], [], []) ++ ([], [], [])
In an equation for ‘it’: it = ([], [], []) ++ ([], [], [])

1 个答案:

答案 0 :(得分:2)

你的主要问题是你有一个元组列表而不是你声称的元组列表 - 所以当然既不:也不{ {1}}会有用。

也许您希望在组件方面使用这些操作,这可以通过以下方式完成:

++

使用这个你得到:

map3 :: (a -> b -> c) -> (a, a, a) -> (b, b, b) -> (c, c, c)
map3 op (xs,ys,zs) (xs',ys',zs') = (xs `op` xs',ys `op` ys',zs `op` zs') 

如果这不符合您的预期/期望,请添加您想要的示例