我有点迷茫。我给了这些不同的时间。第一个是我们的正常时间设置。第二个是具有时区差异的时间设置(与现实世界无关,因为我知道没有12:45时区)。如果时间是上午,则第三个只有True。 我希望能够对这些时间集进行排序。创建列表并对其进行排序。我想我可以通过导入Data.List然后使用sort函数来做到这一点。如果将所有这些不同的时间集都转换为相同的时间集,会更容易。当地时间! 我的问题是如何将LocaltimeAM转换为Localtime?
data Time = Localtime {hour, minute :: Int}
| Globaltime {hour, minute, difference :: Int}
| LocaltimeAM {hour, minute :: Int, am :: Bool}
deriving Show
h :: Time -> (Int, Int)
h (Localtime h m) = (h, m)
h (Globaltime h m d) = ((h+d+24) `mod` 24, m)
h (LocaltimeAM h m am) = (h + (if am then 0 else 12), m)
答案 0 :(得分:3)
我认为即使您使用它发布了一些代码,您也不了解模式匹配。 您可能应该阅读一个教程-网络上应该有很多。
您可以使用类似于您发布的功能将所有内容转换为Localtime
。这是一个框架:您需要填补空白。
h :: Time -> Time
h (Localtime h m) = Localtime h m
h (Globaltime h m d) = Localtime (...) (...)
h (LocaltimeAM h m am) = Localtime (...) (...)