Формат исключения SML
Я использую Linux Mint 17, и недавно я установил smlnj (стандартный ML в Нью-Джерси) и sml-режим для Emacs с помощью apt-get.
Когда я пытаюсь увеличить глубину печати с помощью команды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
Я гуглил, но ничего не нашел.. У кого-нибудь есть идея, что может означать эта ошибка и как ее исправить?
РЕДАКТИРОВАТЬ: Я также попробовал команду с маленьким р, как предложил Гергели, но это не имело никакого значения. Я все еще получаю тот же вывод:
- 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
Я также получаю ту же ошибку, если я печатаю open Control.Print;
в REPL, как Гергели.
Я также пытался собрать smlnj из исходного кода, но Emacs не распознает его - когда я пытаюсь загрузить.sml-файл в REPL с помощью сочетания клавиш Emacs C-c C-l
Он жалуется, что не может найти команду sml.
Спасибо, Шпела
2 ответа
Решаемые. Мне нужно было установить дополнительный пакет libsmlnj-smlnj
который также доступен с apt-get. Это решило мою проблему.
Спасибо за помощь, Шпела.
У меня нет 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
с небольшим р.
Я установил последнюю версию SML/NJ, версия 110.77. Прошло пять минут, я рекомендую собрать его из исходного кода:
http://smlnj.org/dist/working/110.77/NOTES/INSTALL
секция 1.