標準のライブラリを利用する

 

電卓みたいな計算だけではつまらないので、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」にあります。

 

次へ進む