【发布时间】:2017-01-06 21:25:10
【问题描述】:
我正在使用 Emacs 在 sml 中编写一个大约 4 行的简单函数,当我尝试在缓冲区中调用该函数/评估它时,它会在末尾返回 3 个点
val it = [1,2,2,2,2,2,2,2,2,2,2,2,...] : int list
最后的点是什么?我的代码不打印任何点。这是来自 Emacs 还是 sml?请有任何提示。
另外我应该得到一个更长的列表,比如
[1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
这就是为什么会有点吗?
【问题讨论】:
-
您会看到所使用的任何 SML 版本的默认打印长度(Emacs 只是一个编辑器——您使用的是什么编译器?)。您可以更改打印长度(请参阅:stackoverflow.com/a/5079394/4996248,至少对于 SML/NJ),或者您可以编写自己的列表打印功能。 REPL 仅用于开发/调试。它通常会给你一个峰值——而不是完整的值本身(可能很大)。
-
V110.75 好的,我阅读了上面的内容,但不清楚将 Control.Print.printDepth:=60; 等命令放在哪里在 emacs 哪里输入这个?
-
所以您使用的是 SML/NJ。我没有使用 Emacs 和 SML。如果有交互模式——只需在提示符处键入即可。如果您正在加载文件 - 只需将其放在文件顶部即可。实验。
Control.Print.printDepth:=60;只是一个表达式 - 评估它的方式与评估触发val it = [1,2,2,2,2,2,2,2,2,2,2,2,...]的任何内容相同 -
非常感谢!我使用 Control.Print.printLength := 1024;在 emacs 的缓冲区中(我评估我的函数),它现在可以工作了:)