下面的haskell代碼編譯好了。haskell - LYAH - 製作我們自己的類型和我們的類型
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)如何修正以實現物理數量長度(長度Qty)的概念?
這是國際海事組織不是在LYAH最好的例子之一,'數據半徑=半徑浮點數'實際上是一個相當愚蠢的定義,你通常只會寫'類型半徑=浮點數'這種東西。並使用記錄systax來進一步闡明'Circle'中每個字段的含義。 – leftaroundabout 2012-07-20 07:15:20