『プログラミングの基礎』その5

『プログラミングの基礎』の練習問題を解く、の続きです。
本書で使っている言語はOCamlです。
今回は変数定義の構文です。

問題4.1 (P.21)

アルバイトを始めたときには時給850円だが1年経過するごとに時給が100円ずつあがることにしよう。アルバイトを始めてからの年数とその月に働いた時間を与えられたら、その月の給与を返す関数 baito_kyuyo を定義せよ。
# let jikyu = 850 ;;
val jikyu : int = 850
# let baito_kyuyo year month = month * (jikyu + year * 100) ;;
val baito_kyuyo : int -> int -> int = <fun>
# baito_kyuyo 2 100 ;;
- : int = 105000

問題4.2 (P.21)

名前を与えられたら、その名前を使った適当な自己紹介を返す関数 jikoshokaiを定義せよ。
# let jikoshokai name = "My name is " ^ name ^ " !" ;;
val jikoshokai : string -> string = <fun>
# jikoshokai "mukai" ;;
- : string = "My name is mukai !"

問題4.3 (P.21)

身長 (m) を与えられたら、標準体重を返す関数 hyojun_taiju を定義せよ。
ここで標準体重は身長の2乗に22を掛けることで得られる。

P.9 に書いてありますが、べき乗は実数にのみ用意されていて、整数には用意されていない。

# let hyojun_taiju height = height ** 2.0 *. 22.0 ;;
val hyojun_taiju : float -> float = <fun>
# hyojun_taiju 170.0 ;;
- : float = 635800.

問題4.4 (P.21)

身長 (m) と体重 (kg) を与えられたら、 BMI 指数を返す関数 bmi を定義せよ。
BMI 指数は体重を身長の2乗で割ることで得られる。
# let bmi height weight = weight /. height ** 2.0;;
val bmi : float -> float -> float = <fun>
# bmi 170.0 70.0 ;;
- : float = 0.002422145328719723