如何格式化标准ML打印输出?

时间:2013-09-06 15:41:31

标签: formatting string-formatting sml

我正在尝试格式化标准ML中的一些输出。我需要将一些实际值显示为舍入到某个小数位,我还需要能够使用科学记数法显示一些实际值。

打印功能的签名是

val it = fn : string -> unit

似乎不允许使用格式代码或任何其他参数。我也没有在线查找文档。理想情况下,我希望SML中的print函数与C中的printf具有相似的功能......

1 个答案:

答案 0 :(得分:4)

标准ML是一种静态类型的语言。

SML Basis Library包含一些数字格式化操作。但使用它们相对比较冗长,而且相对难以弄清楚。例如,要将实数格式化为科学记数法的字符串,小数点后3位,您可以执行以下操作:

printf

丑陋,对吧?

某些实现提供其他格式化方法。例如,SML / NJ具有Real.fmt (StringCvt.SCI (SOME 3)) 4324423423.5; (* evaluates to string "4.324E9" *) 结构,允许您使用Format样式的格式化字符串。但是,参数必须根据其类型进行包装:

printf

其他SML实现可能有自己的自定义格式化函数。