2007-12-16から1日間の記事一覧

練習問題 3.9

プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~ p.57より。 if式を OCaml の関数で表現することはできません。次の関数はそれを試みたものですが,fact 4 の計算の評価ステップを考え,なぜうまく計算できないのか説明しなさい。 # l…

練習問題 3.11 (2)

本文中で与えられた再帰的な定義で n個の中からm個を選ぶ場合の数 を求める関数 comb を定義せよ,という問題。再帰的な定義は本文(p.51)をみること(書くのが面倒なので)。 # let rec comb n m = if m = 0 then 1 else if n = m then 1 else comb (n-1) m…

練習問題 3.11 (3)

末尾再帰的関数を使ってフィボナッチ数を計算する iterfib # let iterfib n = let rec fibn (x, y) i = if i = n then y else fibn (y, x + y) (i+1) in fibn (0, 1) 1 ;; val iterfib : int -> int = <fun> # iterfib 1;; - : int = 1 # iterfib 2;; - : int = 1</fun>…