【问题标题】:What causes the SML error: Exception- InternalError: asGenReg raised while compiling导致 SML 错误的原因:Exception-InternalError: asGenReg 在编译时引发
【发布时间】: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 上发布问题。

标签: sml polyml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2021-08-27
    • 2012-11-29
    • 2018-05-16
    相关资源
    最近更新 更多