我的 Haskell 有另一个问题。我从一个问题中得到了以下数据构造函数,
type Point = (Int, Int)
data Points = Lines Int Int
| Columns Int Int
| Union Points Points
| Intersection Points Points
它是关于从 (0,0) 和 (x,y) 开始的网格上的点,x 作为与原点的水平距离,y 作为与原点的垂直距离。
我试图从中定义一个函数“Lines”,给定 Lines xy 将评估网格上垂直距离为 x ~ y 的所有点。例如
> Lines 2 4
(0,2)(1,2)(2,2)(3,2)....
(0,3)(1,3)(2,3)(3,3)....
(0,4)(1,4)(2,4)(3,4)....
等等。那么我所做的是,
Lines :: Int -> Int -> Points
Lines lo hi = [ (_, y) | lo <= y && y <= hi ]
但哈斯克尔抱怨说;
无效的类型签名 Lines :: Int -> Int -> Points。
应该是以下形式::
这是什么意思?“Points”已经在上面定义了......肯定“Int”“Points”被视为“类型”吗?我没有看到问题,为什么 Haskell 会感到困惑?