在SML中,你能将".3"转换为真正的"0.3"吗?

mbl*_*itz 1 ml sml smlnj

我是SML的新手,我一直在使用SML/NJ.假设我有以下简单的功能:

fun test(x) = x / 2.0;
Run Code Online (Sandbox Code Playgroud)

试验(0.3); 返回0.15.

我希望它也能用于测试(.3); 现在我收到以下错误:

- test(.3);
stdIn:23.6-23.9 Error: syntax error: deleting  DOT INT RPAREN
Run Code Online (Sandbox Code Playgroud)

当然,我希望它可以与任何形式的0.X一起使用.这可行吗?谢谢!

ben*_*ers 6

"实常数是一个整数常量,可能后跟一个点(.)和一个或多个数字,可能后跟一个指数符号E和一个整数常量;至少有一个可选部分必须出现,因此没有整数常量是例如:0.7,+ 3.32E5,3E~7 .非示例:23,.3,4.E5,1E2.0."

来自:标准ML版本2的定义[Robert Harper,Robin Milner,Mads Tofte] 1988

更新:

1997年标准ML(修订版)定义修改了以下内容:

指数符号(E或e)和十进制表示法的整数常量;