【发布时间】:2014-12-10 22:13:04
【问题描述】:
我有一个名为 image 的类型,它包含一组元组,它们是坐标。我正在尝试进行列表理解,我可以在其中打印出 x 或 y 坐标列表的最大值和最小值。
example :: Image -> (Int,Int)
example e = [ (j,k) | (x,y) <- e, j <- (maximum x), k <- (minimum y)]
我想打印 (max x, min x) 作为首发。
我不断收到错误,有人可以告诉我正确的方法吗?
编辑:感谢答案,我已将第二行更改为:
example e = [ (j,k) | (x,y) <- e, let j = maximum x, let k = minimum y]
但是得到这个错误:
Couldn't match expected type ‘[a]’ with actual type ‘Int’
Relevant bindings include j :: a (bound at image.hs:69:39)
In the first argument of ‘maximum’, namely ‘x’
In the expression: maximum x
对于 j 和 k
【问题讨论】:
-
能否展示一些示例代码,以便我们更好地帮助您?
-
所以你有
[(Int, Int)]之类的东西,你想要([Int], [Int])之类的东西?使用unzip。 -
显示错误本身也非常有帮助。 Haskell 的严格类型非常有助于说明为什么给定语句无效。