我现在要使用数据类型,但我知道其他编程语言。 想象“日期”得到(年月日)
当我有
时data Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec
data Date = Date Int Month Int
我希望有一个funktion
showDate :: Date -> String
如何从数据类型Date中获取3.参数来创建年份? 或者更好地描述..如何创建带有回报的字符串,例如“2017年5月18日”
在其他语言中,我会为3.参数或日期[0]为1编写日期[2]。
感谢您的帮助!
答案 0 :(得分:4)
你在Haskell做pattern matching
:
data Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Show)
data Date = Date Int Month Int
showData :: Date -> String
showDate (Date day mon year) = "Date is: " ++ (show day) ++ " " ++ (show mon) ++ " " ++ (show year)
请注意,我使用Show
为Month
类型导出了deriving (Show)
个实例。您可以手动制作Show
这样的实例,而不是自动执行此操作:
instance Show Month where
show Jan = "January"
show Feb = "February"
.... and so on
演示:
*Main> showDate (Date 3 Feb 2017)
"Date is: 3 Feb 2017"
或者甚至喜欢这样:
data Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Show)
data Date = Date Int Month Int deriving (Show)
这将自动派生您的数据类型的Show实例。
*Main> show (Date 3 Feb 2017)
"Date 3 Feb 2017"