DEV Community

SUZUKI Tetsuya
SUZUKI Tetsuya

Posted on

ゼロから始める OCaml

※この記事は 2014年03月08日 に Qiita に投稿したものです。

※追記:オンラインで OCaml 含む様々なプログラミング言語を試せる Wandbox というサービスがあります。強力な基礎ライブラリの Jane Street Core も使えるので、そちらを使うとこの記事はほぼ無意味です。


OCaml に興味津々のみなさんこんにちは、 OCaml ビギナーです。さて、 OCaml とは(ry

ググればわかるような説明はさておき、そこのあなた、 "Ocaml" とキーを叩いてググる暇があるなら(あっ、 "OCaml" でした!)、いますぐターミナルを開いて brew install ocaml しましょう。やれってば。案ずるより産むが易しと言うではありませんか( Windows でしたか? 残念ながら Windows での OCaml は茨の道のようです。なんとか Unix 環境を用意してください)。おや、「 OCaml は仕事で使えるの?」「関数型言語って難しいんじゃない?」という心の声が聞こえましたが、アーアーキコエナーイ。はいはい、ググるだけ無駄です。どこを探しても、今のあなたの役に立つ情報なんかありませんよ?(おっと、誰か来たようだ)

...

はい、 brew install ocaml しましたか? してない? しないの? なんで? ああ、インストール済みでしたか、早く言ってくださいよ(ちなみに OCaml の最新バージョンは、これを書いている時点で 4.01.00 です)。じゃあ、次にビルドツールの OMake をインストールするために brew install omake して...あっ、 Homebrew に OMake なかった...。もし手間を惜しまないなら OPAM という OCaml 用のパッケージ管理ツールをオススメしますが、セットアップが終わるまでになかなか時間を食います。私のような環境構築をめんどくさがるタイプのビギナーにとっては、これが意外と生きる気力をスポイルするんですよね。技術者たる者、そんなこっちゃいかんと日々思っているのですが。まあ準備運動で力尽きないためにも、最初はインタプリタと標準ライブラリだけで学んでもいいでしょう(コンパイラもあります。後述)。

では、 5 分もあればできる恒例の Hello, world にトライしたいと思います。え? 手垢のついたつまんねーサンプルはやめろ? いやいや、ビギナーってのは Hello, world と出力するまでの手順すらわからないからビギナーなんです。どんな言語でも、まずはそこから調べないとね。というわけで、 main.ml という名前でファイルを作って、次のコードをコピペしてください。

let () = Printf.printf "Hello, world!\n"

あれ? Qiita のシンタックスハイライトに OCaml がないよ?(このハイライトは Haskell らしい)まあいいや、このファイルを ocaml の引数に渡して実行してみましょう。

$ ocaml main.ml
Hello, world!

出力されました!やったね!

...これでおしまいにしちゃうと不親切ですかね。ぱっと見て、次の疑問が頭に浮かんだかと思います。

  • let () = とは何ぞや?
  • OCaml はインタプリタなの?

let () = とは何か? あー、うん、気にしなくていいです。この右辺にコードを書いておくと、プログラムの起動時に実行されるとだけ覚えておけばいいです。

ocaml コマンドはインタプリタですがインタプリタとは言わないとツッコミ頂きましたトップレベル対話環境で、引数にファイルを指定すると面倒なビルド手続きなく実行してくれます。ただ OCaml にはネイティブコードコンパイラ ocamlopt も用意されているので、実際の開発ではこちらを使います。実行速度が違いますからね。その他にバイトコードコンパイラ ocamlc も含まれているのですが、まあ触ってみる程度なら ocaml を、通常の開発では ocamlopt を使えばいいんだと思います。続きは Web で!

さあ、これで OCaml プログラムを動かす方法を一つ覚えました。明日からは好き放題 OCaml を書けますね。うん? main.ml が膨らんだときにファイルを分割するにはどうすればいいかって? そうですねえ、そこまで困ってから考えればいいと思いますよ。

Top comments (0)