Open7
OCaml入門
REPLの起動
$ ocaml
OCaml version 5.1.1
Enter #help;; for help.
#
そのままだと、アローキーなどが使えないので、rlwrap
を使用してOCamlのREPLの機能を強化する
$ rlwrap ocaml
REPLを終了したいとき
# #quit;;
変数定義
let 変数名 = 式
関数定義
let 関数名 引数 ... = 式
- 直接インタプリタでコードを実行する
-
hello.ml
というファイルに書かれたOCaml
コードを実行する場合
-
$ ocaml hello.ml
コードのファイルに簡単なテストコードを書くことができる。
例えば以下のようなコードをテストしたいとき
hello.ml
let base = 100;;
let hourly = 950;;
let incentive = 980;;
let salary x =
if x < 30 then base + x * hourly
else base + x * incentive
(* テストコード *)
let test1 = salary 25 = 23850
let test2 = salary 28 = 26700
let test3 = salary 31 = 29550
- REPL上で
#use "hello.ml";;
を実行することで、テストを実行できる
# #use "hello.ml";;
val base : int = 100
val hourly : int = 950
val incentive : int = 980
val salary : int -> int = <fun>
val test1 : bool = true
val test2 : bool = true
val test3 : bool = false # テストケースが失敗
#
OCaml
の if
は条件分岐を行うと同時に、その評価結果として値を返す構造を持っている。このため、if を使用する際には必ずthen
とelse
の両方を指定する必要がある。つまり以下のような書き方もできる
let salary x =
base + x * (if x < 30 then hourly else incentive)