在不打印签名的情况下声明功能[SML]

时间:2018-11-13 10:28:45

标签: sml

是否可以在SML中声明一个函数而不打印签名?

我发现您可以执行以下操作来打印字符串而无需打印val it = () : unit

val _ = print("Test1");

功能是否可能相同?像这样:

val _ = fun foo x = x + 5;
foo 10;

以下程序无法在SML中编译。 我知道我可以使用let\local,但是不能在闭包之外使用它们。另外,我正在寻找一种方法,而无需导入其他库。

1 个答案:

答案 0 :(得分:2)

您要求的仅与REPL有关,因为功能签名仅打印在REPL中。您可以按照建议(letlocal或不透明的struct)在局部范围内定义函数(或其他值声明),以免它们出现。

一个小技巧是,连续多次重新定义将产生最新的定义,但是最后您仍然需要一个。

如果您想在代码中重用一个值而不用REPL打印它,也许您正在寻找完全禁用REPL声明输出或运行已编译的二进制文件吗?

Moscow ML中,您可以运行REPL而无需使用以下声明输出

mosml -quietdec file.sml

但是与SML / NJ和其他我不知道的人。

相关问题