我正在学习 SML,但无法弄清楚为什么以下教科书代码会产生错误:
fun recip (x,y) = let val t = x *x + y *y in (x /t, ~y/t) end;
错误是:
Exception- InternalError: asGenReg raised while compiling
这适用于 Poly/ML 5.7.1。
该代码计算复数的倒数(x,y)
。我尝试;
在地方添加和括号无济于事。
奇怪的是,以下更改(不正确)的定义可以正常工作。
fun recip (x,y) = let val t = x *x + y *y in (x, ~y/t) end;
错误消息的信息量不是很大。
有人可以帮助解释错误在哪里以及如何解决吗?