以下の Haskell コードは問題なく動作します。
data Point = Point Float Float deriving (Show)
data Shape = Circle Point Float
surface :: Shape -> Float
surface (Circle _ r) = pi * r ^ 2
結果:
*Main> surface $ Circle (Point 0 0) 10
314.15927
以下の Haskell コードは機能しません。なんで?Shape
-の曲面関数をCircle
正しく書くには?
data Point = Point Float Float deriving (Show)
data Radius = Radius Float deriving (Show)
data Shape = Circle Point Radius
surface :: Shape -> Float
surface (Circle _ (Radius r)) = pi * (Radius r) ^ 2