17.4.13 原始プログラムの作成

大きなプログラムを作る場合には,テキストエディタなどを使って原始プログラムを書いたファイルを予め作成しておきます.変数や関数の定義を1つ1つキーボードから入力するかわりに,そのファイルを読み込ませることができるので,作っておいたプログラムを後からいつでも使うことができるようになります.

Ocamlには,原始プログラムをあたかもキーボードから入力されたかのごとく読み込む機能がありますので, その手順を説明します.

原始プログラムを作るには,テキストエディタを使ってテキスト形式のファイルに変数や関数の定義を書きます.Ocamlでは,原始プログラムには .ml で終わるファイル名を付けるという約束がありますので,ここでは quadratic.ml という名前のファイルを作ることにしましょう.

ファイルの中には,これまでキーボードから入力した,変数や関数の定義を順に書くだけです.定義を書いた順番に注意して定義を集めると,次のようになります.キーボードから入力していたときは入力の最後を示すのに;;を付けていましたが、ファイルの中に書く必要はありません.

(* 2次方程式 ax^2 + bx + c = 0 を解く *)

(* 自乗 *)
let square(x) = x *. x

(* 判別式 *)
let discriminant (a,b,c) = square(b) -. 4.0 *. a *. c

(* 解の公式 *)
let quadratic1 (a,b,c) = (-.b +. sqrt(discriminant(a,b,c))) /. (2.0 *. a)
let quadratic2 (a,b,c) = (-.b -. sqrt(discriminant(a,b,c))) /. (2.0 *. a)
filequadratic.ml

ここで (* 自乗 *) のように (**) で囲まれた部分は注釈であり,プログラムとしては何も書いていないのと同じことです.後からプログラムを見たときに,どこで何をやっているかが分かるようにこまめに注釈を書いておきましょう.(「(*」と「*)」にいわゆる全角文字のかっこを使うと,エラーになりますので注意して下さい.)

また,変数や関数を使う場合は,必ず定義が先にあることに気付いたでしょうか.Ocaml言語では,キーボードから入力するときだけでなく,原始プログラムとしてファイルに書く場合でも,定義を先に書かなければいけません.