1

背景:私はEmacs 23.3、OCaml 3.12.0、tuareg1.45.7を使用しています。

私はHickeyOCamlの本を見ていて、pgで例を実行しようとしています。本の157、.pdfの167。式で問題が発生します

type ’a blob = < draw : unit; .. > as ’a

これをtuaregモードでemacsバッファーに入力し、を使用して評価しようとするとC-c C-e、camlトップレベルで次のエラーが発生します。

# type 'a blob = < draw : unit; .. > as ';;
Characters 39-41:
  type 'a blob = < draw : unit; .. > as ';;
                                         ^^
Error: Syntax error

トップレベルに送信されたコマンドにファイナルaが表示されないことに注意してください。線をトップレベルに直接入力すると、問題なく機能します。

# type 'a blob = < draw : unit; .. > as 'a;;
type 'a blob = 'a constraint 'a = < draw : unit; .. >

だから私の質問は:なぜこれが機能しないのですか、そしてどうすればそれを修正できますか?tuaregを更新することはオプションではないようです。tuaregバージョン2.0を使用しようとしましたが、正しくロードされません。

更新:これは、12/8/12の時点でtuaregSVNトランクで修正されました。彼らが修正でリリースを更新したとは思わないが、あなたは匿名でトランクをつかむことができる

svn checkout svn://svn.forge.ocamlcore.org/svn/tuareg/trunk

開発バージョンとリリースバージョンに関する通常の警告を念頭に置いてください。

4

1 に答える 1

3

それはトゥアレグのバグです。何らかの理由で、彼はフレーズの終わりを正しく計算できません。それを回避するには、2つの可能性があります。

  • タイプを括弧で囲みます:type 'a t = (<..> as 'a)動作します

  • 手動でトップレベルに送信します。行をコピーしてトップレベルのバッファーに貼り付け、追加;;します(トップレベルのフレーズ区切り文字、推測できる場合はソースコードでオプション)。

編集:バグがアップストリームで報告されているようです。うまくいけば、彼らは遅かれ早かれそれを修正するでしょう。

于 2011-04-24T06:06:16.280 に答える