0

我正在学习 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; 

错误消息的信息量不是很大。

有人可以帮助解释错误在哪里以及如何解决吗?

4

1 回答 1

1

正如@qouify 和@mobdnilo 评论指出的那样,这个错误似乎是Ubuntu 中特定版本的PolyML 的错误。我通过从源代码编译到最新版本(5.9)重新安装了 PolyML,并且错误消失了。

于 2022-01-02T12:12:54.893 回答