第 4 章の途中まで (p.18 - p.26)

少しサボってた。暑いからねぇ。
今回は関数定義の話。
今回からは問題の解答は載せないことにした。面倒。サポートページを見れば分かるから良いよね。

関数の定義

let 関数名 引数... =

関数定義の引数に型の指定がいらないのかー。
注意。

  • 関数名のあとに括弧はいらない。
  • 引数の区切りにはスペースを使う。コンマではない。

問題 4.1 の解答で関数の使い方を示す。

# let jikyu = 850;;					(* 時給の定義 *)
val jikyu : int = 850
# let baito_kyuyo time year = (100 * year + jikyu)* time;; (* バイトの給与計算の定義 *)
val baito_kyuyo : int -> int -> int = <fun>
# baito_kyuyo 10 1;;					(* アルバイト二年目で 10 時間の勤務 *)
- : int = 9500
# baito_kyuyo 10 0;;					(* アルバイト一年目で 10 時間の勤務 *)
- : int = 8500

これくらいの関数は 1 行で良いけど、多少大きな関数になった場合の書き方が良く分からないなー。
後半に出てくるっぽいけど。
それから関数の型の話題がちょっと分かり辛い。
上の例は int->int->int 型って呼べばいいんだろうか。
この辺は型推論に関係しているのかなー、と思う。


4.4 節で出てきた話題で、どうやらというかやっぱりというか、元から用意されている四則算の演算子と同様に関数も型それぞれに合わせた専用の物を用意してあげなければいけない。
汎用な関数は全く作れないってことなのかな。


イマイチやる気が乗らないので、第 4 章は明日に続く。