【发布时间】:2022-01-02 20:12:54
【问题描述】:
我正在学习 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;
错误消息的信息量不是很大。
谁能帮忙解释错误在哪里以及如何解决?
【问题讨论】:
-
这与 MLton 20180207 编译得很好。所以这看起来像一个 polyml 错误。
-
“内部”错误是语言实现中的错误;你几乎无能为力。尝试更新 polyml(现在是 5.9)。如果这仍然不起作用,请考虑在他们的 github 上发布问题。