运算符和操作数不一致找不到原因
Operator and operand don't agree can't find why
我正在编写此代码,但无法完成 运行。我已经检查了几次,但仍然无法弄清楚为什么它不起作用。
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>
然后它说它期待 <type1>
类型的东西,但你给它的是 <type2>
类型的东西。在您的例子中,get_nth
需要一个元组,其中第一个元素是一个字符串列表,第二个元素是一个 int。您正在提供一个元组,其中第一个元素是一个字符串列表(这是正确的),但您的第二个参数是一个字符串,它应该是一个 int。你会想要改变
get_nth(months, Int.toString(#2 date))
到
get_nth(months, #2(date))
我正在编写此代码,但无法完成 运行。我已经检查了几次,但仍然无法弄清楚为什么它不起作用。
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>
然后它说它期待 <type1>
类型的东西,但你给它的是 <type2>
类型的东西。在您的例子中,get_nth
需要一个元组,其中第一个元素是一个字符串列表,第二个元素是一个 int。您正在提供一个元组,其中第一个元素是一个字符串列表(这是正确的),但您的第二个参数是一个字符串,它应该是一个 int。你会想要改变
get_nth(months, Int.toString(#2 date))
到
get_nth(months, #2(date))