shapeToPic :: Shape -> Picture
shapeToPic (Line a b) = polyline [a, b]
shapeToPic (Rectangle a b) = rectangle a b
形状由
定义data Shape = Rectangle Side Side
| Ellipse Side Side
| Polygon [Point]
| Line Point Point
deriving (Show)
我得到错误:
<interactive>:55:41: error: * Couldn't match type
(整数,整数)&#39;使用Double' Expected type: Side Actual type: (Integer, Integer) * In the second argument of
矩形&#39;,即(5, 7)' In the first argument of
shapeToPic&#39;,即(Rectangle (3, 3) (5, 7))' In the first argument of
drawingOf&#39;,即 `(shapeToPic(矩形(3,3)(5,7)))&#39;
Haskell有点新鲜,我知道我需要放一个&#39; Side&#39;类型为矩形需要2分,但不确定问题是什么。我有2分?任何帮助解决这个问题都将非常感谢!
答案 0 :(得分:1)
看起来Side
被定义为Double
,而不是一对。因此,Rectangle 13.45 12.32
可以,而Rectangle (x1,y1) (x2,y2)
则不行。
显然,“矩形”形状仅包含宽度和高度,但不包含“原点”。这很奇怪,因为线和多边形确实包含Shape
类型的原点。这看起来像是潜在的设计不一致。
您应该在问题中提供Side
的定义,否则我们只能推测。
答案 1 :(得分:0)
也许你用逗号制作了拼写错误的点?
let x = (1.1) :: Double -- type checks
let x = (1,1) :: Double -- same error