我在執行需要從類派生貨幣資料型別的任務時遇到問題,以 18.04$ 的形式指定美元,以 500¥ 的形式指定日元。
現在我不允許使用派生(Show),這讓我有點困惑,有人可以解釋我如何繼續嗎?
data Currency = Dollar Dollar | Yen Yen
data Dollar = Dollar Integer Integer
data Yen = Yen Integer
class (Show a) => Currency a where
...
uj5u.com熱心網友回復:
資料建構式之間可能存在“沖突”。您可以省略Yen和Dollar資料型別,并使用:
data Currency = Dollar Integer Int | Yen Integer
型別構造Currency函式沒有型別引數,因此Currency a沒有意義。你可能想要做的是寫:
class Show Currency where
show (Yen y) = show y "¥"
show (Dollar d c)
| c < 10 = '$' : show d '.' : 0 : show c
| otherwise = '$' : show d '.' : show c
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/536660.html
標籤:哈斯克尔
