【发布时间】:2010-10-18 23:02:57
【问题描述】:
我是标准 ML 的新手,我正在尝试了解 SML/NJ 运行时环境。我想让它适应我的需要。具体来说,我想:
- 默认使用 IntInf
- 防止其将字符串和 IntInf 截断为 70 个字符。
这是我在 8 多个小时的阅读文档和实验中发现的。
我可以使用命令在 int 之上重载 IntInf
open IntInf;
我可以使用变量 Control.Print.stringDepth 控制字符串中显示多少个字符。例如,这将让它在截断之前显示 1000 个字符:
Control.Print.stringDepth := 1000;
如何对 IntInf 值执行相同的操作?我可以将深度设置为无限(即完全不截断)吗?
打开 IntInf 是用 IntInf 重载 int 的最佳方式吗?
最后,我如何让这一切在运行时自动加载,以便当我调用“sml”时它在我的默认环境中?
编辑:我后来发现有一个名为 Control.Print.intinfDepth 的选项可以设置为一个很大的数字(比如 999999)。不过,我不知道如何使它无限。
我的其他问题仍未得到解答。
编辑:我遇到了这个set of SML/NJ customizations for a class at Kansas State。为了显示我自己的横幅消息并避免显示“val it = true : bool”,我需要测试 SMLofNJ.exportML 的返回值。如果是真的,堆映像刚刚恢复(即启动),我可以显示一条消息。如果为 false,则只是保存了堆映像。
【问题讨论】: