我正在尝试创建一个包含列表推导的数组:
array = [(x,y)|(x,y,z)<-oldArray, z == 10]
假设oldArray
是一个先前制作的具有3个Int值的数组,但我想要制作的新数组只需要前两个,但它们是否被添加取决于第三个的条件
我无法判断这是否正常工作。
答案 0 :(得分:3)
您编写的示例代码解决了您所描述的问题。 你过滤掉z不是10的元素,然后只取2个元组的第一部分来构建一个新的数组。
答案 1 :(得分:2)
我认为你真正想问的是如何调试haskell程序。对于这种情况,只需启动ghci
,并使您的算法有点功能,并使用它。
Prelude> let foo oldArray = [(x,y)|(x,y,z)<-oldArray, z == 10]
Prelude> foo [(1,2,3)]
[]
Prelude> foo [(1,2,10)]
[(1,2)]
Prelude> foo [(1,2,10),(3,4,5),(5,6,10)]
[(1,2),(5,6)]
“正常工作”基本上意味着你真正得到的是你所期望的。我们可以看到,foo
工作正常。
或者我们可以在源文件中使用一些print
,看看输出是否是预期的。
有关详情,请使用ghci debugger
或Debug.Trace
。