2008-02-05から1日間の記事一覧

練習問題8.1

本文中でもふれたように,ref型は以下のように定義された,1フィールドの書き換え可能な レコードです。 type 'a ref = { mutable contents : 'a };; 関数 ref,前置演算子 !,中置演算子 := の定義をレコードに関連した操作で書きなさい。 こうかな。 let r…

練習問題8.2

与えられた参照の指す先の整数を1増やす関数 incr を定義しなさい。 # let incr x = x := !x + 1;; val incr : int ref -> unit = <fun> # let x = ref 3;; val x : int ref = {contents = 3} # incr x;; - : unit = () # !x;; - : int = 4</fun>

練習問題8.4

参照と繰り返しの構文(while,for)を使ってフィボナッチ数を求める関数を定義しなさい。 # let fib n = let fibs = ref (1, 1) in let i = ref 1 in while !i < n do fibs := (snd !fibs, fst !fibs + snd !fibs); i := !i + 1 done; snd !fibs ;; val fib…