是否可以在SML
中声明一个函数而不打印签名?
我发现您可以执行以下操作来打印字符串而无需打印val it = () : unit
:
val _ = print("Test1");
功能是否可能相同?像这样:
val _ = fun foo x = x + 5;
foo 10;
以下程序无法在SML
中编译。
我知道我可以使用let\local
,但是不能在闭包之外使用它们。另外,我正在寻找一种方法,而无需导入其他库。
答案 0 :(得分:2)
您要求的仅与REPL有关,因为功能签名仅打印在REPL中。您可以按照建议(let
,local
或不透明的struct
)在局部范围内定义函数(或其他值声明),以免它们出现。
一个小技巧是,连续多次重新定义将产生最新的定义,但是最后您仍然需要一个。
如果您想在代码中重用一个值而不用REPL打印它,也许您正在寻找完全禁用REPL声明输出或运行已编译的二进制文件吗?
在Moscow ML中,您可以运行REPL而无需使用以下声明输出
mosml -quietdec file.sml
但是与SML / NJ和其他我不知道的人。