SML:语法错误在哪里

时间:2017-12-06 03:51:26

标签: sml

所以我最近学习了 sml ,并且与java相比,对如何使用它感到困惑。所以我被告知我制作一个代码,它接受连续的值对,添加它们并将总和插入到新的列表中。

如果原始列表具有奇数长度,则成对添加第一个$this项目,并且简单地将n-1项目复制到新列表的末尾。

所以到目前为止我的代码是:

n-th

但我收到语法错误。而且由于sml没有为我找到错误,我会在问题上失败,或者它是否有效。我相信这应该有用。

1 个答案:

答案 0 :(得分:5)

(if (tl x =[])中有一个不匹配的括号 (SML的错误信息可能是我遇到过的最令人困惑的事情 - 我在EOF"得到#34;语法错误,这完全没用。)

如果使用较少的括号,则更容易匹配括号:

fun sumpairs x =
    if null x then []
    else if tl x = [] then x
    else hd x + hd (tl x) :: sumpairs (tl (tl x))

可以显示哪些括号匹配的编辑器也有帮助 如果你找到了神奇的设置,大多数现代程序员的编辑都可以做到这一点。

我建议您对模式匹配感到满意 - 通常使用模式比使用条件链更容易遵循逻辑:

fun sumpairs [] = []
  | sumpairs [x] = [x]
  | sumpairs (x::y::xs) = x + y :: sumpairs xs