如果必须设置约束,则创建的任何 Circle 的 Radius 必须大于零( Radius > 0 )。怎么做?
data Point = Point Float Float deriving (Show)
data Radius = Radius Float deriving (Show)
data Shape = Circle Point Radius deriving (Show)
surface :: Shape -> Float
surface (Circle _ (Radius r)) = pi * r ^ 2
如果方便,请提供更多示例,说明如何在各种场景中设置约束/验证。例如,数据电话可以有正则表达式或特定的起始号码集(区号或国家代码等)。