以下のhaskellコードはコンパイルされます。
data Point = Point Float Float
data Radius = Radius Float
data Shape = Circle Point Radius
以下のコードに沿って何かを書くことは可能ですか(コードはコンパイルに失敗します):
data LengthQty = Radius Float | Length Float | Width Float
data Shape = Circle Point Radius
この試みの背後にある考え方は、半径、長さ、および幅が物理量の長さを表すということです。
次のように書かれている場合は、2番目の部分の2行目に注意してください
data Shape = Circle Point LengthQty
次に、コンパイルしますが、その場合、「LengthQty」は、長さ、幅、半径など、半径のみが必要なものにすることができます。
(1)第2部の何が問題になっていますか?
(2)物理量の長さ(LengthQty)のアイデアを実装するためにどのように修正できますか?