在不打印签名的情况下声明函数[SML]

在不打印签名的情况下声明函数[SML],sml,Sml,是否可以在不打印签名的情况下在SML中声明函数 我发现您可以通过执行以下操作来打印字符串,而无需打印val it=():unit: val _ = print("Test1"); 是否有可能在功能上实现相同的功能?比如: val _ = fun foo x = x + 5; foo 10; 以下程序不会在SML中编译。 我知道我可以使用let\local,但是我不能在闭包之外使用它们。另外,我正在寻找一种不导入其他库的方法。您所要求的仅与REPL相关,因为函数签名仅打印在REPL中。如您所建

是否可以在不打印签名的情况下在SML中声明函数

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

val _ = print("Test1");
是否有可能在功能上实现相同的功能?比如:

val _ = fun foo x = x + 5;
foo 10;
以下程序不会在
SML
中编译。
我知道我可以使用
let\local
,但是我不能在闭包之外使用它们。另外,我正在寻找一种不导入其他库的方法。

您所要求的仅与REPL相关,因为函数签名仅打印在REPL中。如您所建议的(
let
local
或不透明的
struct
),您可以通过在本地范围中定义函数(或其他值声明)来避免函数出现

一个小技巧是,一行中的多个重新定义将产生最新的定义,但最后仍然需要一个

如果您想在代码中重复使用某个值而不让REPL打印它,那么您可能希望完全禁用REPL声明输出,或者运行已编译的二进制文件

在中,您可以运行REPL,而无需声明输出

mosml -quietdec file.sml

但对于SML/NJ和其他人,我不知道。

您所要求的仅与REPL有关,因为函数签名仅打印在REPL中。如您所建议的(
let
local
或不透明的
struct
),您可以通过在本地范围中定义函数(或其他值声明)来避免函数出现

一个小技巧是,一行中的多个重新定义将产生最新的定义,但最后仍然需要一个

如果您想在代码中重复使用某个值而不让REPL打印它,那么您可能希望完全禁用REPL声明输出,或者运行已编译的二进制文件

在中,您可以运行REPL,而无需声明输出

mosml -quietdec file.sml

但是对于SML/NJ和其他我不知道的东西。

对于SML/NJ,也有这个答案,但它似乎也摆脱了提示,我不得不稍微修改一下答案,删除初始的“编译器”。因此语句开始于“Control”@SimonShine这是怎么重复的?我甚至指出我知道如何在打印时忽略
valit=():unit
,我想知道如何忽略函数签名。你的建议没有包含关于我的问题的任何信息。对于sml/nj,也有这个答案,但它似乎也摆脱了提示,我不得不稍微修改一下答案,删除初始的“编译器”。因此语句开始于“Control”@SimonShine这是如何重复的?我甚至指出我知道如何在打印时忽略
valit=():unit
,我想知道如何忽略函数签名。您的建议不包含关于我的问题的任何信息。SML/NJ的答案在一个重复的问题中(在注释中链接到原始问题),我是否有可能说服您在那里添加您的mosml解决方案?SML/NJ的答案在一个重复的问题中(在注释中链接到原始问题),我能说服你在那里添加mosml解决方案吗?