プログラミング in OCaml #6

プログラミング in OCaml (目次) - kengpong

(*
 * 練習問題 3.13
 * 練習問題 3.7 の pow 関数をカリー化して定義せよ。
 *)
let rec pow x n =
    if n < 2 then x
    else pow x n - 1 *. x;;

(* 第一引数が指数になるように定義し、3乗する関数 cube を部分適用で定義 *)
let rec pow n x =
    if n < 2 then x
    else pow (n - 1) x *. x;;
let cube = pow 3;;

(* 第二引数が指数の場合に、cube を定義するにはどうするか *)
let rec pow x n =
    if n < 2 then x
    else pow x n - 1 *. x;;
let cube = (fun x -> pow x 3);;

(* 練習問題 3.14 *)
(* え?定積分?なにそれうまいの? *)

(* 練習問題 3.15 以下の型の適当な関数を定義 *)
(* int -> int -> int -> int *)
let foo i j k = i + j + k;;

(* (int -> int) -> int -> int *)
let bar (f : int -> int) i = f i;;

(* (int -> int -> int) -> int *)
let baz (f : int -> int -> int) = f 1 2;;

Newton-Raphson法のあたりは華麗にスルーした。いつか倒すリストに入れておいてやろう!


適当な関数を定義が適当すぎるのはこれで良いの?
なんか問題読み間違えてる気もするなぁ。