Sml ML中的多态列表
我在ML中有一段代码:Sml ML中的多态列表,sml,smlnj,Sml,Smlnj,我在ML中有一段代码: local fun unfolder( [] , n ) = [] | unfolder( l::ls, n ) = (n, l) :: unfolder( ls, n ) in fun flat list = unfolder(list, 1) end; 这给了我一个错误: unexpected exception (bug?) in SML/NJ: EA [EA] raised at: ../../MLRISC/x86/mltree/x86.
local
fun unfolder( [] , n ) = []
| unfolder( l::ls, n ) = (n, l) :: unfolder( ls, n )
in
fun flat list = unfolder(list, 1)
end;
这给了我一个错误:
unexpected exception (bug?) in SML/NJ: EA [EA]
raised at: ../../MLRISC/x86/mltree/x86.sml:417.32-417.34
../compiler/Basics/stats/stats.sml:198.40
../compiler/Basics/stats/stats.sml:198.40
../compiler/Basics/stats/stats.sml:198.40
../compiler/TopLevel/interact/evalloop.sml:44.55
但是当我把它的(n,l)改成(n,l:int)时它就工作了,当我把它改成
(n,l:a)
时,有人能解释一下多态类型为什么不工作吗。如果使用MLton编译,该程序将完美运行,并添加:
val _ =
let val l = flat [1,2,3]
fun printer (a,b) = Int.toString(a) ^ ", " ^ Int.toString(b)
in
print (printer (hd l) ^ "\n")
end
报告它。您的示例在大小上似乎易于理解,并且可能与多态性表示有关