更新:我想用这段代码做的是获取日期列表、年/月/日和给定数字作为月份,并检查给定列表中有多少日期与给定的月份。我所说的 x = x + 1 是 x++,例如在 java、C 或 C# 中。作为我想要x的输出。如果没有匹配,0 并且对于任何匹配 x = x + 1
所以这是我的代码,
fun number_in_month (Dlist : (int * int * int) list, Month : int, x : int) =
if null Dlist then x
else if #2 (hd Dlist) = Month then x = x + 1 andalso number_in_month (tl(Dlist), Month, x)
else number_in_month ((tl(Dlist)), Month, x)
它给了我错误:
Error: types of if branches do not agree [tycon mismatch]
then branch: int
else branch: bool
in expression:
if null Dlist
then x
else if (fn <rule>) (hd <exp>) = Month
then (x = <exp> + <exp>)
andalso (number_in_month (<exp>,<exp>,<exp>))
else number_in_month (tl <exp>,Month,x)
我真的不明白为什么 sml 正在考虑 bool 类型的 x = x + 1。如果有人能告诉我如何正确地说 x = x + 1 in sml,我会非常高兴。提前非常感谢。