我有一个在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 = ([], [], []) ++ ([], [], [])
答案 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')
如果这不符合您的预期/期望,请添加您想要的示例