Open7

OCaml入門

shogo_tkskshogo_tksk

REPLの起動

$ ocaml                                                               
OCaml version 5.1.1
Enter #help;; for help.
# 
shogo_tkskshogo_tksk

変数定義

let 変数名 =

関数定義

let 関数名 引数 ... =
shogo_tkskshogo_tksk
  • 直接インタプリタでコードを実行する
    • hello.mlというファイルに書かれたOCamlコードを実行する場合
$ ocaml hello.ml
shogo_tkskshogo_tksk

コードのファイルに簡単なテストコードを書くことができる。
例えば以下のようなコードをテストしたいとき

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 # テストケースが失敗
# 
shogo_tkskshogo_tksk

OCamlif は条件分岐を行うと同時に、その評価結果として値を返す構造を持っている。このため、if を使用する際には必ずthenelseの両方を指定する必要がある。つまり以下のような書き方もできる

let salary x =
    base + x * (if x < 30 then hourly else incentive)