我对ML毫无经验,而且我无法理解这一点。标准ML多态排序
开始问题
多态性排序
列表上执行插入排序此函数采用作为参数的比较功能较少和元素的列表升进行排序。该代码编译并运行正常:
fun sort(less, nil) = nil |
sort(less, a : : l) =
let
fun insert(a, nil) = a : : nil |
insert(a, b : : l) = if less(a,b) then a : : (b: : l)
else b : : insert(a, l)
in
insert(a, sort(less, l))
end;
这是什么类型的函数的类型?简要解释一下,包括辅助功能插入的类型。您不必在此代码上运行ML算法;只是解释一个普通的ML程序员为什么期望代码具有这种类型。 (结束问题)
我已经得到了排序函数的类型(通过在SML解释器中运行代码),但我无法得到有关插入的第二部分。
类型排序功能:
val sort = fn : ('a * 'a -> bool) * 'a list -> 'a list
任何帮助将不胜感激。
如果您发现'sort'的类型的SML REPL你为什么没做'insert'一样吗?无论如何 - 这看起来像功课。如果是这样,课程的文本应该对SML的类型系统进行相当详细的讨论。你读过它吗?你已经复制了一个问题,但没有提出任何问题,至少不是你的问题。 –
我已经阅读过,而且我不明白(这就是我来到这里的原因)。另外,我确实把插入函数放到了编译器中,并且我得到了这个'fun insert(a,nil)= a :: nil | (a,b :: l)= if less(a,b)then a ::(b :: l) else else b :: insert(a,l)' – user3313728
我在'fun insert'部分输入它说'stdIn:9.24-9.28错误:未绑定变量或构造函数:less' – user3313728