data Rectangle = Rectangle Height Width
data Circle = Circle Radius
class (Eq a
, Show a
) => Shape a
where
instance Eq Rectangle
where (Rectangle h w) == (Rectangle c d) = (h == c) && (w == d)
instance Show Rectangle
where show (Rectangle h w
) = "rectangle " ++ (show h
) ++ " " ++ (show w
)
instance Shape Rectangle where
area (Rectangle h w) = h * w
perimeter (Rectangle h w) = h*2 + w*2
(Circle r) == (Circle x) = r == x
instance Show Circle
where
instance Shape Circle where
area
(Circle r
) = pi * r
**2 perimeter
(Circle r
) = 2 * pi * r
dHlwZSBIZWlnaHQgPSBGbG9hdAp0eXBlIFdpZHRoICA9IEZsb2F0CnR5cGUgUmFkaXVzID0gRmxvYXQKZGF0YSBSZWN0YW5nbGUgID0gUmVjdGFuZ2xlIEhlaWdodCBXaWR0aCAKZGF0YSBDaXJjbGUgPSBDaXJjbGUgUmFkaXVzCgpjbGFzcyAoRXEgYSwgU2hvdyBhKSA9PiBTaGFwZSBhIHdoZXJlCiAgIGFyZWEgOjogYSAtPiBGbG9hdAogICBwZXJpbWV0ZXIgOjogYSAtPiBGbG9hdAoKaW5zdGFuY2UgRXEgUmVjdGFuZ2xlIHdoZXJlCiAgICAoUmVjdGFuZ2xlIGggdykgPT0gKFJlY3RhbmdsZSBjIGQpID0gKGggPT0gYykgJiYgKHcgPT0gZCkKCmluc3RhbmNlIFNob3cgUmVjdGFuZ2xlIHdoZXJlCiAgICBzaG93IChSZWN0YW5nbGUgaCB3KSA9ICJyZWN0YW5nbGUgIiAgKysgKHNob3cgaCkgKysgIiAiICsrIChzaG93IHcpCgppbnN0YW5jZSBTaGFwZSBSZWN0YW5nbGUgd2hlcmUKICAgIGFyZWEgKFJlY3RhbmdsZSBoIHcpID0gaCAqIHcKICAgIHBlcmltZXRlciAoUmVjdGFuZ2xlIGggdykgPSBoKjIgKyB3KjIKCmluc3RhbmNlIEVxIENpcmNsZSB3aGVyZQogICAgKENpcmNsZSByKSA9PSAoQ2lyY2xlIHgpID0gciA9PSB4CgppbnN0YW5jZSBTaG93IENpcmNsZSB3aGVyZQogICAgc2hvdyAoQ2lyY2xlIHIpID0gImNpcmNsZSAiICArKyAoc2hvdyByKQoKaW5zdGFuY2UgU2hhcGUgQ2lyY2xlIHdoZXJlCiAgIGFyZWEgKENpcmNsZSByKSA9IHBpICogcioqMgogICBwZXJpbWV0ZXIgKENpcmNsZSByKSA9IDIgKiBwaSAqIHIKICAgCm1haW4gPSBwcmludCAiZm9vIg==