我对SML很新,我一直在使用SML / NJ。 假设我有以下简单的功能:
fun test(x) = x / 2.0;
试验(0.3);返回0.15。
我希望它也能用于测试(.3); 现在我收到以下错误:
- test(.3);
stdIn:23.6-23.9 Error: syntax error: deleting DOT INT RPAREN
当然,我希望它可以与任何形式的0.X一起使用。 这可行吗?谢谢!
答案 0 :(得分:6)
“实常数是一个整数常量,可能后跟一个点(。)和一个或多个数字,可能后跟一个指数符号 E 和一个整数常量;至少有一个必须出现可选部分,因此整数常数不是实常数。例如: 0.7,+ 3.32E5,3E~7 。非示例: 23,.3,4.E5,1E2 .0 。“
来自:标准ML版本2的定义[Robert Harper,Robin Milner,Mads Tofte] 1988
更新
Definition of Standard ML (Revised) 1997修改了以下内容:
指数符号(E或e)和十进制的整数常量 符号;
答案 1 :(得分:2)
似乎Real
s必须在小数点之前有一些东西,即使它是零,至少在你正在使用的SML的实现中。
我在库或规范中找不到任何关于它的内容,因此它可能是特定于实现的,但同样的是,这两个地方的所有示例都始终在小数点之前放置零事实上,它可能是语言本身的要求。