构造函数“矩形”应该有2个参数,但没有给出

我有这个代码

type Point = (Int, Int)

data Points 
    = Rectangle Point Point
    | Union Points Points
    | Difference Points Points

inMax :: Int -> Int -> Int
inMax a b
    | a < b     = b
    | otherwise = a

inMin :: Int -> Int -> Int
inMin a b
    | a < b     = a
    | otherwise = b

inPoints :: Point -> Points -> Bool
inPoints (x, y) Rectangle (x1, y1) (x2, y2) = ((inMin x1 x2) <= x && x <= (inMax x1 x2)) && ((inMin y1 y2) <= y && y <= (inMax y1 y2))

我想知道一个点是否在 Rectangle 中,但我得到了下一个错误:构造函数 `Rectangle' 应该有 2 个参数,但没有给出任何参数。为什么?我应该怎么修?

回答

为了“解包” Rectangle,然后Rectange在括号之间写:

inPoints :: Point -> Points -> Bool
inPoints (x, y) (Rectangle (x1, y1) (x2, y2)) = --- …
--              ↑        parenthesis        ↑

因此,我们执行模式匹配以获得 的点Rectangle。你不能使用Rectange它自己作为一个模式。


以上是构造函数“矩形”应该有2个参数,但没有给出的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>