電卓みたいな計算だけではつまらないので、OCamlに標準で用意されているライブラリ・モジュールを利用して、もうちょっとプログラミング言語っぽいことをしてみましょう。ライブラリには、最初からロードされているものと、そうでないものがあります。たとえば、乱数生成のためのモジュールRandomは、はじめからロードされていて
# Random.init 12345 ;;
- : unit = ()
# Random.int 10 ;;
- : int = 7
# Random.int 10 ;;
- : int = 1
# Random.int 10 ;;
- : int = 1
のように利用できます。Random.initは乱数生成器を初期化する関数、Random.intは与えられた正整数より小さい、ランダムな非負整数を返す関数です。別の例としては、カレントディレクトリの名前を取得する関数Sys.getcwdや、カレントディレクトリを変更する関数Sys.chdirなどがあります。
# Sys.getcwd () ;;
- : string = "/home/sumii"
# Sys.chdir "/home/sumii/tmp" ;;
- : unit = ()
# Sys.getcwd () ;;
- : string = "/home/sumii/tmp"
# Sys.chdir ".." ;;
- : unit = ()
# Sys.getcwd () ;;
- : string = "/home/sumii"
一般に、モジュールで定義されている関数や定数は「モジュールの名前.関数や定数の名前」という形で使うことができます。このように最初からロードされているモジュールの一覧はhttp://caml.inria.fr/pub/docs/manual-ocaml/manual034.html、和訳はhttp://ocaml.jp/archive/ocaml-manual-3.06-ja/manual034.htmlにあります(ただし和訳は一部未完のようです)。
最初からロードされていないライブラリとしては、
l UNIXのシステムコール機能を提供するUnixモジュール(Windowsでも利用可能)
l 正規表現による文字列処理機能を提供するStrモジュール
l 簡単なグラフィックス機能を提供するGraphicsモジュール
等々があります。たとえば、Strモジュールだったら、まず
# #load "str.cma" ;;
としてライブラリをロードし(#loadの#も忘れずに打ってください)
# Str.global_replace (Str.regexp "f...")
"xxxx" "abcdefghijkl" ;;
- : string = "abcdexxxxjkl"
のように文字列検索や置換などの機能を利用することができます。これらのモジュールのマニュアルはhttp://caml.inria.fr/pub/docs/manual-ocaml/ないしhttp://ocaml.jp/archive/ocaml-manual-3.06-ja/の「Part IV」にあります。