所以我最近学习了 sml ,并且与java相比,对如何使用它感到困惑。所以我被告知我制作一个代码,它接受连续的值对,添加它们并将总和插入到新的列表中。
如果原始列表具有奇数长度,则成对添加第一个$this
项目,并且简单地将n-1
项目复制到新列表的末尾。
所以到目前为止我的代码是:
n-th
但我收到语法错误。而且由于sml没有为我找到错误,我会在问题上失败,或者它是否有效。我相信这应该有用。
答案 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