【问题标题】:Simple SML code error简单的 SML 代码错误
【发布时间】:2011-09-21 10:02:06
【问题描述】:

我刚刚开始学习 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

谁能指出我做错了什么?

谢谢。

【问题讨论】:

    标签: sml smlnj ml


    【解决方案1】:

    您的代码中有两个错误:

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

    【讨论】:

    • 你好 sepp2k。谢谢你的回答。我检查了真实的签名,发现了你提到的“==”函数。我仍然不清楚你提到的第 1 点 .. 是 SML 中的“rec”关键字(我只是选择它作为互惠的缩写形式)
    • @ankit:是的,rec 是一个关键字——它允许递归的值定义。
    • 完美。现在我已经阅读了关于递归函数的章节,这很有意义......感谢您的所有帮助!
    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 2014-08-16
    • 2017-05-30
    • 2014-04-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多