6
我有这段代码:SML列表平等奇怪
fun foldr2(f, x::xs) =
if xs = [] then
x
else
f(x, foldr2(f, xs))
随着类型签名
(''a * ''a -> ''a) * ''a list -> ''a
看起来相当直接的,它需要的是工作在平等类型和列表的功能由于xs = []
的比较,所以作为参数的平等类型。但是,由于某种原因,它在输入上起作用,如(op +, [2.3, 2.7, 4.0])
,当在SML/NJ reals不是一个相等类型。任何人都可以帮助我了解为什么发生这种魔术?
+1,我也想知道为什么这个工程。就好像SML/NJ将条件块翻译为“无效[2.3,2.7,4.0]”或类似。 – 2010-12-16 20:03:04