data Months = January|February|March|April|May|June|July
deriving (Eq, Ord, Enum)
instance Show Months where
show January="Jan"
show February="Feb"
show March="Mar"
....
什麼我需要做的顯示輸出爲這樣的:「一月」,「二月」,......,「七五」哈斯克爾的數據顯示
data Months = January|February|March|April|May|June|July
deriving (Eq, Ord, Enum)
instance Show Months where
show January="Jan"
show February="Feb"
show March="Mar"
....
什麼我需要做的顯示輸出爲這樣的:「一月」,「二月」,......,「七五」哈斯克爾的數據顯示
Show
可以自動導出:
data Months = January | February | March | April | May | June | July
deriving (Eq, Ord, Enum, Show)
所以:
λ> show January
"January"
我想有可能是您希望Show
實例顯示一個很好的理由這些縮寫的月份名稱,但爲什麼不只是改變你的數據構造函數的名稱來匹配?
而不是顯示一月份,我可以擁有它,這樣當我編寫顯示月份時,它們全部顯示? @mdunsmuir – benjy1911
@ benjy1911使用'show [January .. July]'。 'Enum'實例允許您按順序生成所有月份。 – user2407038
或者,更好的是,還可以派生'Bounded'和'show [minBound .. maxBound]',以防萬一以後再增加月份。 – Ingo
目前還不清楚你在問什麼 - 你是否需要幫助你的Show實例 - 在每個'show ...'之前,它是錯誤地縮進使用至少2個空格的;如果你的意思是如何在命令行上打印它 - 使用'print 1月'或'putStrLn $ show January' – epsilonhalbe
我也會調用你的數據類型'Month' - 因爲複數通常表示一個事物列表(這只是約定) 。 – epsilonhalbe