Sml 运算符和操作数don';我不同意可以';我不知道为什么

Sml 运算符和操作数don';我不同意可以';我不知道为什么,sml,ml,Sml,Ml,我正在编写此代码,无法使其运行。我已经检查了几次,仍然不明白为什么它不工作 fun date_to_string (date : (int * int * int)) = let val months = ["January", "February","March", "April", "May", "June","July", "August", "September", "October", "November", "December"

我正在编写此代码,无法使其运行。我已经检查了几次,仍然不明白为什么它不工作

fun date_to_string (date : (int * int * int)) =
  let
      val months = ["January", "February","March", "April",
                    "May", "June","July", "August", "September", "October", "November", "December"];
      fun get_nth (xs : string list, n : int) =
        if n=1
        then hd xs
        else get_nth(tl xs, n-1)
  in
      get_nth(months, Int.toString(#2 date)) ^ " " ^ Int.toString(#3 date) ^ ", " ^ Int.toString(#1 date)
  end
以下是我尝试运行它时得到的结果:


当您看到表单错误时:

operator domain: <type1>
operand : <type2>


您正在将
get\n
应用于一对列表和字符串,而不是列表和int:
get\n(月,int.toString(#2日期))
Int.toString
的结果不是Int。您可能根本不想在那里使用该函数。此外,还有一个基本库函数
List.nth
您可能需要使用。观察得好,我已经完全忘记了它。非常感谢。
get_nth(months, Int.toString(#2 date))
get_nth(months, #2(date))