はじめての OCaml (1) - Hello World - 備考録とエトセトラ
関数型言語のカリスマ、OCaml (※個人の感想です)
OCamlは、フランス発祥の関数型のプログラミング言語です。bonjour!
歴史はそこそこあり、1996年に登場しました(Wikipedia調べ)
そもそも関数型ってなによ?
プログラミングパラダイムのひとつで、語弊をおそれずに端的にいうと、処理の記述スタイルのうちの1つでしょうか。
プログラミングパラダイムとして代表的なものは、この関数型の他、手続き型があります。
C言語やJava等、代表的な言語がいっぱいあります。
詳しくはググりましょう。
とりあえずさわってみましょう
まぁ細かいことはヌキにして、まずは書いてみましょうか。まずは手を動かそう。
インストール
ArchLinux を使っているので、以下コマンドでインストール。
$ sudo pacman -S ocaml
あ、話は変わりますけど、Win/Linuxのクロスプラットフォームを考えてるなら、Debian + MinGWがおすすめっぽいです。
OCamlのMinGWパッケージが環境作り・動作確認ファイル作成がカンタンです。
HelloWorld.ml
スクリプト言語みたく、対話式でも使用できますが、やっぱり普通はソースファイルに落とし込みますよね。
OCamlのソースファイルは、mlの拡張子で保存するのが通例のようです。
元となった言語ML(Meta Language)の名残のようですね。
(* Hello World *)
print_string "Hello, World!\n";;
実行
ocamlインタプリタに通せば、スクリプト的に実行できます。
$ ocaml HelloWorld.ml
Hello, World!
バイトコードにコンパイルして実行
バイトコードはocamlrunで実行する形式のファイルです。
Javaでいう、classファイルみたいな位置づけです。
(ファイル冒頭に、#!/usr/bin/ocamlrun の記述があります)
$ ocamlc -o HelloWorld HelloWorld.ml
$ ./HelloWorld
Hello, World!
ネイティブコードにして実行
普通の実行形式ファイルになります。
生成されるファイルはC言語と比べると少し大きめ。stripすると少し小さくなります。
$ ocamlopt -o HelloWorld HelloWorld.ml
$ ./HelloWorld
Hello, World!
すこし説明
コメント
ソースファイルの冒頭で登場している(*と*)で囲まれた文字は、コメントです。
C言語等と違い、ネストすることができます。
つまり
(*
* こういう
* (*書き方が*)
* できます
*)
これは、処理のコメントアウト等をする場合に便利でしょう。
関数の呼び出し
OCamlでは、関数名 引数 で関数を呼び出すことができます。
上記では、print_string関数を、“Hello, World!”を引数に設定して呼び出しています。
関数呼び出しの行を手続き型言語で書くと、以下のようになります。
(例は、C言語風の疑似コード)
print_string("Hello, World!");
blog comments powered by Disqus