简单的SML代码错误

时间:2011-06-23 16:57:46

标签: 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 Error: syntax error found at BAR

有人可以指出我做错了吗?

谢谢。

1 个答案:

答案 0 :(得分:4)

您的代码中有两个错误:

  1. val rec和类型注释之间,应该有您定义的值的名称。
  2. 您无法在real上使用模式匹配。由于real是不精确的,因此它们不是相等类型,因此您也不能对它们使用=。您需要使用Real.==来比较实数的相等性(或者更好:不要将它们进行相等性比较,而是将它们与某些delta进行比较)。