私の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 ]
しかし、Haskell は次のように不満を述べています。
無効なタイプ シグネチャ Lines :: Int -> Int -> Points.
::の形式である必要があります
これはどういう意味ですか?「ポイント」はすでに上で定義されています...確かに「Int」「ポイント」は「タイプ」と見なされますか?問題がわかりません。Haskell が混乱しているのはなぜですか?