下面的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
这一尝试背后的想法是半径、长度和宽度代表物理量长度。
请注意,在第二部分的第二行中,如果这样写
data Shape = Circle Point LengthQty
然后,它会编译,但在这种情况下,“LengthQty”可以是长度、宽度或半径之类的任何东西,其中只需要半径。
(1) 第二部分有什么问题?
(2)如何纠正实现物理量长度(LengthQty)的思想?