【问题标题】:Format exception SML格式异常 SML
【发布时间】:2015-01-18 09:14:07
【问题描述】:

我正在使用 Linux Mint 17,并且我最近使用 apt-get 为 Emacs 安装了 smlnj(标准 ML of New Jersey)和 sml-mode。

当我尝试使用命令增加打印深度时 Control.Print.PrintDepth := 100;我收到以下错误:

- Control.Print.PrintDepth := 100;
[autoloading]
[library $smlnj/compiler/current.cm is stable]
[library $smlnj/compiler/x86.cm is stable]
[library $smlnj/viscomp/core.cm is stable]
[library $smlnj/viscomp/basics.cm is stable]
[library $smlnj/viscomp/elabdata.cm is stable]
[library $smlnj/viscomp/elaborate.cm is stable]
[library $SMLNJ-BASIS/basis.cm is stable]
[library $smlnj/viscomp/debugprof.cm is stable]
 Error: (stable) $smlnj/smlnj-lib/smlnj-lib.cm: unable to find $SMLNJ-LIB/Util/smlnj-lib.cm (/build/buildd/smlnj-110.76/sml.boot.x86-unix/SMLNJ-LIB/Util/smlnj-lib.cm)

unexpected exception (bug?) in SML/NJ: Format [Format]
  raised at: ../cm/stable/stabilize.sml:257.15-257.21
         ../cm/stable/stabilize.sml:360.44
         ../compiler/TopLevel/interact/evalloop.sml:44.55

我用谷歌搜索了它,但没有找到任何东西.. 有谁知道这个错误可能意味着什么以及如何解决它?

编辑:我也按照 Gergely 的建议尝试了带有小 p 的命令,但没有任何区别。我仍然得到相同的输出:

- Control.Print.printDepth := 100;
[autoloading]
[library $smlnj/compiler/current.cm is stable]
... 
[library $smlnj/viscomp/debugprof.cm is stable]
 Error: (stable) $smlnj/smlnj-lib/smlnj-lib.cm: unable to find $SMLNJ-LIB/Util/smlnj-lib.cm (/build/buildd/smlnj-110.76/sml.boot.x86-unix/SMLNJ-LIB/Util/smlnj-lib.cm)

unexpected exception (bug?) in SML/NJ: Format [Format]
  raised at: ../cm/stable/stabilize.sml:257.15-257.21
             ../cm/stable/stabilize.sml:360.44
             ../compiler/TopLevel/interact/evalloop.sml:44.55

如果我像 Gergely 那样在 REPL 中键入 open Control.Print;,也会遇到同样的错误。

我也尝试从源代码构建 smlnj,但 Emacs 无法识别它 - 当我尝试使用 Emacs 键盘快捷键 C-c C-l 将 .sml 文件加载到 REPL 时,它抱怨它找不到 sml 命令。

谢谢, 什佩拉

【问题讨论】:

  • 在smlnj的lib目录下通常有一个目录叫SNLNJ-LIB;它在那里吗?如果不是,我怀疑apt包坏了。
  • @molbdnilo 你是对的,在 smlnj/lib 中没有 SMLNJ-LIB 目录。这应该是公认的答案。谢谢。
  • 我在 Ubuntu 机器上进行了检查,这些部件位于“libsmlnj-smlnj”包中。也许这没有在 Mint 上为您安装?

标签: emacs smlnj sml-mode


【解决方案1】:

已解决。我需要安装额外的软件包libsmlnj-smlnj,它也可以通过 apt-get 获得。它解决了我的问题。

感谢您的帮助,Špela。

【讨论】:

    【解决方案2】:

    我没有 Linux Mint 但尝试打开结构 Control.Print:

    - open Control.Print;
    opening Control.Print
      val printDepth : int ref
      val printLength : int ref
      val stringDepth : int ref
      val intinfDepth : int ref
      val printLoop : bool ref
      val signatures : int ref
      val printOpens : bool ref
      val out : {flush:unit -> unit, say:string -> unit} ref
      val linewidth : int ref
      val say : string -> unit
      val flush : unit -> unit
    

    如您所见,寻找的函数名称是 printDepth,带有小 p。

    我安装了最新的 SML/NJ,版本 110.77。花了五分钟,我建议从源代码构建它:

    http://smlnj.org/dist/working/110.77/NOTES/INSTALL

    第 1 节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2014-07-11
      • 2021-11-11
      • 2013-08-11
      相关资源
      最近更新 更多