比较Integer和当前年份haskell

时间:2014-12-14 21:11:29

标签: haskell

我在编写的模块中有一个功能,需要将特定自定义数据中的年份与当前年份进行比较。

 removeOld :: Publication -> Bool
 removeOld (PubE (y) s s' _) = if y > 1999 then True else False  

此功能与过滤器一起使用以删除不需要的数据。就我而言,所有出版物都超过5年。 我知道当前日期的函数总是返回一个" IO类型",但在这种情况下,这个函数没有副作用,如果有机会比较当前年份,我就会徘徊数据中的年份。

我希望该功能看起来像

 removeOld :: Publication -> Bool
 removeOld (PubE (y) s s' _) = if (currentYear - y) < 5 then True else False  

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您可以将currentYear作为参数添加到removeOld功能中。

像下面的代码一样发现

removeOld :: Int -> Publication -> Bool
removeOld currentYear (PubE (y) s s' _) = (y > currentYear)

然后您可以将代码用作 removeOld 1999这是第一个例子。


编辑:问题有所改变......

要获取当前日期,请使用以下代码(您需要包含Data.Time.CalendarData.Time.Clock):

do
    now <- getCurrentTime
    let (year, month, day) = toGregorian $ utctDay now

然后,您可以在函数中使用year,或使用函数中的上述代码。