2

私のコード:

Term :
...
| VAR { try Hashtbl.find var_table $1
         with Not_found ->
      printf "no such variable '%s'\n" $1; 0.0 }    /*(Line:75)*/
...

そして、私がそれを実行したとき、私は以下 ocamlc -c parser.mlを見る:

Error: This expression has type float but an expression was expected of type
         Syntax.term

誰もが私がこの問題を証明するのを手伝ってくれる?75行目のタイプがSyntax.mlおよびSyntax.mllで定義されているSyntax.termタイプと一致しないことは理解していますが、それを証明するためにSyntax.termに0.0のタイプを指定したいと思います。できますか?

- - - - - - - - - - 編集 - - - - - - - - - :

用語タイプ:

type term =
    TmTrue
  | TmFalse
  | TmIf of term * term * term
  | TmAnd of term * term
  | TmOr of term * term
  | TmXor of term * term
  | TmSum of term * term
  | TmSub of term * term
  | TmMult of term * term
  | TmPow of term * term
  | TmZero
  | TmSucc of term
  | TmPred of term
  | TmIsZero of term
  | TmNot of term

すべてが正しく機能しています。コードに割り当てを追加したい場合は、上記のコードを使用してVARをTermに追加します。私はそれのためにハッシュテーブルと他のものを作成します、しかしこのセクションは私を混乱させます...

- - - - - - - - - - - /編集 - - - - - - - - - - - -

tnx;)

4

1 に答える 1

3

値0.0を表すことができる用語がありません。多分あなたは使うべきTmZeroですか?

于 2013-01-06T22:22:46.503 に答える