Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重载冲突,单位为ML(SML/NJ)_Sml_Smlnj - Fatal编程技术网

重载冲突,单位为ML(SML/NJ)

重载冲突,单位为ML(SML/NJ),sml,smlnj,Sml,Smlnj,我为ML编写了以下代码: fun get_digits (0, s) = s | get_digits (d, s) = get_digits( d div 10, (d mod 10) :: s) | get_digits n = get_digits( n div 10, [n mod 10] ); 但它给了我以下错误: Error: Operator and operand do not agree (overload conflict) operator

我为ML编写了以下代码:

fun get_digits (0, s) = s
        | get_digits (d, s) = get_digits( d div 10, (d mod 10) :: s)
        | get_digits n = get_digits( n div 10, [n mod 10] );
但它给了我以下错误:

Error: Operator and operand do not agree (overload conflict)
operator domain: [mod ty] * [mod ty]
operand: ([mod ty] * [mod ty] list) * [int ty]
in expression
n div 10
Error: Operator and operand do not agree (overload conflict)
operator domain: [mod ty] * [mod ty]
operand: ([mod ty] * [mod ty] list) * [int ty]
in expression
n mod 10

有人能解释一下这意味着什么,我应该做些什么改变吗?提前感谢

您的前两个案例说明
get_digits
的参数是一对整数和一个列表

然后,您的第三个案例尝试将
div
mod
应用于这样一对,但这不起作用

由于无法定义以数字或对作为参数的函数,因此需要使用两个函数:

fun get_digits' (0, s) = s
  | get_digits' (d, s) = get_digits' (d div 10, (d mod 10)::s);

fun get_digits n = get_digits' (n div 10, [n mod 10]);
当然,您可以在
get_digits
中本地定义helper函数