简单SML代码错误
我刚刚开始学习SML,还在理解它的错误信息 尝试输入下面的函数定义时简单SML代码错误,sml,smlnj,ml,Sml,Smlnj,Ml,我刚刚开始学习SML,还在理解它的错误信息 尝试输入下面的函数定义时 val rec : real->real = fn 0.0 => 0.0 | n:real => 1.0/n; 我得到以下错误: stdIn:25.9-25.17 Error: syntax error: deleting COLON ID ARROW stdIn:25.24-25.33 Error: syntax error: deleting FN REAL DARROW stdIn:25.38 E
val rec : real->real = fn 0.0 => 0.0 | n:real => 1.0/n;
我得到以下错误:
stdIn:25.9-25.17 Error: syntax error: deleting COLON ID ARROW
stdIn:25.24-25.33 Error: syntax error: deleting FN REAL DARROW
stdIn:25.38 Error: syntax error found at BAR
有人能指出我做错了什么吗
谢谢。您的代码中有两个错误:
val rec
和类型注释之间,应该有您正在定义的值的名称real
s上使用模式匹配。由于real
s是不精确的,它们不是相等类型,因此您也不能对它们使用=
。您需要使用Real.==
来比较Real是否相等(或者更好:不要比较Real是否相等,而是将它们与一些delta进行比较)你好,sepp2k。谢谢你的回答。我检查了真实的签名,找到了你提到的“==”函数。你提到的第一点我还不清楚。。“rec”是SML中的一个关键字吗(我只是选择它作为互惠的缩写)@ankit:Yes,
rec
是一个关键字-它允许值定义是递归的。完美。现在我已经读了递归函数一章,这很有意义。。。谢谢你的帮助!