作成された円の半径がゼロより大きくなければならないという制約を設定する必要がある場合(半径> 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
都合がよければ、さまざまなシナリオで制約/検証を設定する方法について、さらにいくつかの例を挙げてください。たとえば、データ電話には、正規表現または特定の開始番号のセット(市外局番または国番号など)を含めることができます。