2017-11-02 9 views
-1

SMLラムダの微積分変換関数を作成していますが、いくつかのエラーが発生しましたが、修正方法はわかりません。SML - コード内のエラー

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が括弧内の不均衡のためにあることは確かだが、私は見ることができない。このコードは次の機能に必要です。私はそれがいくつかの単純な構文エラーだと確信していますが、私はあまりにも進んでどのように助けていただければ幸いですか?

+0

なり

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

から最後)を削除します。ほとんどの現代編集者はそれを行うように構成することができます。 – molbdnilo

答えて

0

追加した括弧を追加しました。だから、それが一致する括弧を強調表示し、テキストエディタを持っていることは非常に便利です

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

第2のifの行には、3つの開始括弧と4つの終了括弧があります。実際にそこに必要なのは実際に1ペアの括弧だけです。