我正在开发一个名为“Haskel-dator”的小型haskell程序,hahaha ....无论如何,继承了我目前代码的进展,以及随后的运行时错误:
代码
data Date = Date Int Int Int
type Date = (Int,Int,Int)
sum :: Int -> Int -> Int
sum x y | let x - y = z
| where z > 0
diff :: Date -> Date -> Int -- Difference between the two dates
diff (a,b,c) (x,y,z) = if a < x && b < y && c < z
then do sum
else return 0
的错误
*错误“myprogram.hs”: - 类型构造函数“Date”的多个声明
*
基本上,我希望我的程序有以下假设:
我希望我的程序实现一个看起来像这样的输出:
示例输出
diff(1,1,2010)(10,1,2010)=&gt; 9
diff(2,2,2011)(2,2,2012)=&gt; 365
diff(28,2,2012)(1,3,2012)=&gt; 2
有什么想法吗?
答案 0 :(得分:4)
您应该查看标准time
包。
diffDays功能正是您想要的。它返回两个日期之间的天数。
diffDays :: Day -> Day -> Integer
日期定义为Day。
可以使用fromGregorian函数构建日实例。
可以找到完整的示例here。
请记住,正确计算两个日期之间的天数是一项非常复杂的任务。