SML - 代码中的错误

时间:2017-11-02 11:38:16

标签: syntax-error sml

我正在制作SML lambda演算翻译功能,我遇到了几个错误,我不知道如何修复它。

    cfunf id (CAPP(e1,e2))=
          if not(cfree id (CAPP(e1,e2)))
             then CAPP(CK,CAPP(e1,e2))
             else
             if ((CID id) = e2) andalso not(cfree id e1)
             then e1
             else CAPP(CAPP(CS, (cfunf id e1)),(cfunf id e2));

我得到的错误是RPAREN THEN和ELSE IDA。我很确定RPAREN是用于括号中的不平衡,但我没有看到。以下函数需要此代码。我确定它有一些简单的语法错误,但我不知道如何进行,所以任何帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

第二个if的行有3个开头但有4个右括号。 (事实上​​,那里实际上只需要一对parens。)

答案 1 :(得分:0)

您添加了额外的括号。从

中删除最后一个)
if ((CID id) = e2) andalso not(cfree id e1))

所以它变成

if ((CID id) = e2) andalso not(cfree id e1)