0

我正在尝试学习 SML,并且正在尝试实现两个功能。第一个函数工作正常,但是当我添加第二个函数时,它给了我一个运行时错误:

stdIn:1.2-1.17 Error: unbound variable or constructor: number_in_month

这在调用函数 number_in_month 时发生。我的代码是:

 fun is_older(d1 :int*int*int,d2 :int*int*int) =
  (#1 d1) < (#1 d2) andalso (#2 d1) < (#2 d2) andalso (#3 d1) < (#3 d2)


fun number_in_month(da :(int * int * int) list ,mo : int) =
    if da = []
    then 0
    else if (#2(hd da)) = mo
     then 1 + number_in_month((tl da),mo)
    else 0 + number_in_month((tl da),mo)
4

1 回答 1

1

你的问题听起来很像其他问题:SML 列表迭代(8 个月前)、SML 中的递归(9 个月前)和Count elements in a list(8 个月前),所以你肯定不会得到分数一个创造性的问题。

上面的一些问题已经得到了广泛的回答。看他们。

这是以更好的风格重写的代码:

(* Find better variable names than x, y and z. *)
fun is_older ((x1,y1,z1), (x2,y2,z2)) =
    x1 < x2 andalso y1 < y2 andalso z1 < z2

fun number_in_month ([], mo) = 0
  | number_in_month ((x,y,z)::rest, mo) =
    if y = mo then 1 + number_in_month(rest, mo)
              else 0 + number_in_month(rest, mo)
于 2013-10-17T08:59:20.287 回答