Commits

camlspotter  committed 85c6935

update

  • Participants
  • Parent commits b26bf86

Comments (0)

Files changed (1)

File ocaml-tools.rst

 ==========================
 
 現時点での公式最新バージョンは 4.00.1。
-
 4.00.1 は基本的に 4.00.0 のバグフィクスリリース。4.00.0 では GADT と 3.12.1 より使い易い first class module が入っている。
 
 このところ OCaml のマイナーバージョンの変わるリリースは一年に一度位。
 Bytecode とはいえコンパイルが入るため、インタープリタとは普通呼ばれない。
 (Native code へとコンパイルする ocamlnat という対話環境も存在する。ただしまだ「非公式」)
 
-ocaml toplevel の対話環境としての能力はあまり高くない。行の編集や履歴を呼び出したい場合は、
+ocaml toplevel はラインエディタではない。行の編集や履歴を呼び出したい場合は、
 
 * rlwrap : read line wrapper ( http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap )
 * emacs の shell mode 内などでの実行
 OCaml コンパイラソースコードで make opt の後に make opt.opt を行うと作成される。
 通常の ocamlc, ocamlopt は bytecode で実行される。 
 \*.opt コンパイラは native にコンパイルされているため bytecode へとコンパイルされたコンパイラより実行速度が早い。
-(Bytecode 版コンパイラがひどく遅いわけではない。)
+(Bytecode 版コンパイラがひどく遅いわけではない。)
 
 ocamlc, ocamlopt 以外のツールにも、.opt の postfix がついた native code バージョンが存在する。
 
 OCaml パーサーツール
 ================================
 
-OCaml では lex-yacc スタイルのパーサツールが標準で付属しており、
+OCaml では lex-yacc スタイルのパーサ生成器が標準で付属しており、
 このパーサによって OCaml の文法自体も定義されている。
 
 ocamllex ★★★★
 ocamlyacc のほぼ上位互換 parser generator として Menhir という外部ツールがある。 Menhir は ocamlyacc と同じ \*.mly ファイルを受け取る上に、エラーメッセージが読みやすいなど良い点が多い。そのため、現在 OCaml で parser generator を使う場合は Menhir を使うことが推奨されている。
 (ユーザに Menhir をインストールさせるのが面倒だと思われる場合は、 Menhir で新しい機能を使わず、デバッグ開発を行い、リリース時には ocamlyacc に戻す、ということも可能。)
 
+lex-yacc は枯れている上に早い。Lex-yacc も使えずに Parsec があーたらどーたら言っているのは甘えです。
+
 マクロ/文法拡張システム: Camlp4 pre-processor and pretty printer ★★★
 =======================================================================
 Camlp4 (略称P4) は Pre-Processor and Pretty Printer の4つの P から P4 と呼ばれ、
 リンク支援: ocamlmktop, ocamlmklib ★★
 =================================================
 ocamlmktop および ocamlmklib は外部Cライブラリをリンクした toplevel や
-ライブラリを作成する際に補助的に使用するツールである
+ライブラリを作成する際に補助的に使用するツール。
 
 これらのライブラリや toplevel は
 OCaml コンパイラ、C コンパイラ、リンカ、アーカイバ を自分で呼び出すことで
 
 ocamlbuild は簡単な OCaml ソースに対しては ソースファイル名を列挙するだけでモジュール間の依存関係解析からコンパイル、リンクに至るまでを自動的に行なってくれる。そのため Makefile のような既存の外部ビルドシステムにおけるビルドの煩雑さから解放される。
 
-複雑なソース、プログラムコードの自動生成や特殊なリンクが必要な場合など、の場合は myocamlbuild.ml という OCaml モジュールで特殊ルールを実装することができる。myocamlbuild.ml では ocamlbuild が提供するビルドルール記述のためのライブラリを使用することができる。問題はこのライブラリを使うドキュメントがあまり整備されていないこと。(Camlp4 3.10以降系といい、 ocamlbuild といい 3.10 周りで作られたツールはドキュメントが全くなっていない) また、ルール記述が OCaml という汎用言語で書かねばならないためどう見ても書きにくい読みにくいことである。もちろん OCaml の利点である型安全性やパターンマッチ、高階関数などによってビルドルールを構成的に書くことができるのだが…ビルドに特化した Makefile や OMakefile などの文法からするととても読みにくい。もう少し文法拡張などして DSL の風味を付け加えるべきではなかろうか。
+複雑なソース、プログラムコードの自動生成や特殊なリンクが必要な場合など、の場合は myocamlbuild.ml という OCaml モジュールで特殊ルールを実装することができる。myocamlbuild.ml では ocamlbuild が提供するルール記述のためのライブラリを使用することができる。問題はこのライブラリを使うドキュメントがあまり整備されていないこと。(Camlp4 3.10以降系といい、 ocamlbuild といい 3.10 周りで作られたツールはドキュメントが全くなっていない) また、ルール記述が OCaml という汎用言語で書かねばならないためどう見ても Makefile や OMakefile などのビルドに特化した言語に比べ煩雑に見えてしまうことである。もちろん OCaml の利点である型安全性やパターンマッチ、高階関数などによってビルドルールを構成的に書くことができるのだが…もう少し文法拡張などして DSL の風味を付け加えるべきではなかろうか。
 
 私は ocamlbuild は使わない。OMake を使っている。とは言え、どうやら世の中的には ocamlbuild が標準になりつつあるのでそろそろ手を出さねばならない…