last mod. 2015-07-21 (火) 18:50:13

OCaml.JP へようこそ!

ここはOCaml(旧称 Objective Caml)に関する情報を集めたコミュニティサイトです。

OCamlとは

top2.png

OCaml(オキャムル/オーキャムル)は、INRIA(フランス国立情報学自動制御研究所)で開発されている関数型言語の一種で、最新の言語理論の成果が取り入れられたプログラミング言語です。

  • 型安全な静的型システムを基盤に、バグが少なく高い信頼性を持つプログラムが開発できます。
  • 型推論、代数的データ型、モジュールシステム、多相バリアントといった様々な機能を利用して、より簡潔で整理されたコードが記述できます。
  • x86, x86-64, ARM, PowerPCなど多数のアーキテクチャのネイティブコードを出力できるコンパイラを持っています。Android や iOS 向けのクロスコンパイルも可能です(opam-androidhttp://psellos.com/ocaml/https://github.com/gerdstolpmann/ocaml/tree/gs-4.02.2+ios も参考になるでしょう)。
  • OCamlは、コンパイラは Q Public License 1.0、ライブラリは GNU LGPLv2 の元で公開されています。コンパイラへの改変はパッチの形でのみ公開可能という制限がありますが、OCamlを利用した開発には一切制限がありません。仕事に趣味に、安心して利用できます。
  • いますぐOCamlを触ってみたいという人は、 http://try.ocamlpro.com/ でブラウザ上でOCamlインタープリターを試すことができます。
  • 最新バージョンのダウンロードはこちら
    download-now_1-1_orange.png

What's New

  • 2015/7/21: 今月中に OCaml 4.02.3 がリリースされる予定だそうです。 https://sympa.inria.fr/sympa/arc/caml-list/2015-07/msg00055.html
  • 2015/6/18 Version 4.02.2 リリース 【DOWNLOAD】
  • 2014/10/14 Version 4.02.1 リリース
  • 2014/08/29 Version 4.02.0 リリース
    • 様々な新機能が追加されています。
      • 文字列を変更不可能にするための第一歩として、変更可能なバイト配列を表わす bytes 型と、それを操作するための Bytes ライブラリが導入されました。デフォルトでは bytes は単なる string の別名なので、既存の string を破壊的に書き換えているコードも(警告は出ますが)そのままコンパイルできます。 -safe-string オプションを使うと string と bytes は別の型になり、 string は変更不可能になります。
      • match 構文を拡張して、引数の式の評価値に対して場合分けするだけでなく、引数の式を評価するときに発生した例外についても場合分けできるようになりました。これにより、昔からある let x = a in b で a で発生した例外は捕捉されるが b で発生した例外は捕捉されないという問題が解決できます。
      • 型システム及びコンパイラがモジュールの別名(module M = AnotherModule? のように既存のモジュールに付けた別の名前)を追跡するようになりました。これにより、適用的な(applicative)ファンクタの型付けがより精確になるだけでなく、リンク時により精確な依存性解析ができるようになり、実行ファイルのサイズを削減できる可能性ができました。
      • OCaml のほとんどの構文要素(式、定義、型宣言等々)にアノテーションを付けられるようになりました。アノテーションはコンパイラによって使われる(例えば、非推奨の関数を使っていたら警告する)だけでなく、 ppx 前処理で、構文木書き換えの手掛かりにするのにも使われます。
      • type t = ... で拡張可能な型を定義し、 type t += A of int のようにして新たな構成子で型を拡張できます。これは例外値の型 exn の扱いを一般化したものです。
      • ファンクタとファンクタ適用の引数として () を取ることができるようになりました。これを使うことで抽象型の generativity を強制できるようになります。
      • トップレベル指示子として、トップレベル環境について問い合わせる #show_type と #show_modules 等が追加されました。
      • 以下のような最適化が加わったことにより、プログラムによっては、 ocamlopt で生成されたコードの性能が向上します。より aggressive な定数伝播、新たな最適化パス(到達不能コードの削除、共通部分式の削除)、文字列に対するパターンマッチの改良、定数例外の表現の最適化、ヒープの大きい場合の GC の調整。
      • printf の書式文字列が GADT で表現されるようになりました。これにより、 printf がかなり高速化されました。さらに書式文字列の型検査がより精確にできるようになりました。
      • ネイティブコードコンパイラが AArch64 (ARM 64 bits) をサポートするようになりました。
      • Camlp4 と Labltk が配布物から分割されました。これらは別のプロジェクトになりました。
    • OCaml4.02.0の変更点
  • 2013/09/12 Version 4.01.0 リリース
  • 2012/10/05 Version 4.00.1 リリース
    • 22個のバグフィックス。クリティカルなバグがあるのでアップデート推奨です。
    • OCaml4.00.1の変更点
  • 2012/07/26 Version 4.00.0 リリース
  • 2012/05/14 和訳マニュアルを更新しました。

過去のニュース

新規 編集 添付