对于此函数,我得到了两个整数,并且应该将数字范围从num1到num2放入列表中。
let rec range num1 num2 =
(* YOUR CODE HERE *)
if num2 < num1 then raise IncorrectRange
else if num1 = num2 then [num1]
else let num3 = num1 +1 in num1::(range num3 num2)
let range() = assert (range 2 5 = [2;3;4;5])
由于某种原因,当我测试我的代码时,它指出该函数的类型为unit-> unit,并且应用了太多的参数。我究竟做错了什么?
最佳答案
您的代码由不同类型的名为range
的函数的两个定义组成。这是合法的OCaml代码(第二个定义隐藏了第一个),但这似乎不太可能达到预期的目的。
我的猜测是assert
行中有一个错字。
无论如何,您在此之后输入的任何代码都将使用range
的第二个定义,该定义的类型实际上为unit -> unit
。
关于compiler-errors - 为什么编译器说明我要应用许多参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60269561/