• 追加された行はこの色です。
  • 削除された行はこの色です。
- 日時 :2006/5/21 (Mon)
- 場所 :名大 理学部1号館(多元数理科学研究科) 307室
- 時刻 :18:00〜19:30
- 参加者:13名
- Garrigue先生がキタ
- ocamlで[[不動点コンビネータ]]って書けるんでしたっけ?型はどうなるんでせう?Haskellなら y f = f (y f) ですが -- [[けいご]] &new{2006-05-23 (火) 10:53:09};
- let rec y f = f (y f);;です。再帰を使って不動点を定義するという妙なことになりますが、この際気にしない :) -- [[小笠原]] &new{2006-05-23 (火) 10:57:31};
- あっ、lazy 忘れてました。let rec y f = f (lazy (y f));; こうしないとスタック溢れます。すみません。 -- [[小笠原]] &new{2006-05-23 (火) 11:21:17};
- おおっなるほど〜 しかし[[別の所:http://tsukimi.agusa.i.is.nagoya-u.ac.jp:16080/~sydney/ocaml/index.php?%C9%D4%C6%B0%C5%C0%A5%B3%A5%F3%A5%D3%A5%CD%A1%BC%A5%BF#lc835d08]]ではまってしまいました。 -- [[けいご]] &new{2006-05-23 (火) 11:33:57};

#comment

*3章 exercize [#sa623689]

** Exercize7 (小笠原) [#jd1bac1a]
 #再帰関数の練習
 #不動点コンビネーターを使ってもいいけど、それはまたの機会に
 let rec pow (x, n) =
   if n = 0 then 1.0 
   else x *. pow (x, n - 1)
 ;;
 let rec pow' (x, n) =
   match n with
     0 -> 1.0
   | n when n mod 2 = 0 -> pow' (x *. x, n / 2)
   | n -> x *. pow' (x, n - 1)
 ;;  

** Exercize11 (けいご) [#k0e4344a]
 # Exercise 11 担当:今井(け)
 # 1. 
 let rec gcd m = function
     0 -> m
   | n -> gcd n (m mod n)
   ;;
 
 # 落とし穴
 # let gcd m = function 0 -> 0;;
 # などと遊んだ後,
 # let gcd m = function
 #    0 -> m
 #  | n -> gcd n (m mod n)
 #  ;;
 # と,recが欠けた定義をしたら,おかしなことになった
 
 # 2.
 # nCr = n!/r!(n-r)!
 
 let rec comb n r = 
   let rec fac = function 
       0 -> 1
     | n -> n * fac (n-1)
   in
   fac n / ((fac r) * (fac (n-r)))
   ;;
 
 # 3. 
 let rec fib_pair n = 
   if n = 1 then (0, 1)
   else
     let (prev, curr) = fib_pair (n-1) in (curr, curr+prev);;
 # 後で書く
 
 # 4. はやってない

**Exercise 12 (末次) [#p15a88be]
 let rec pos n = 
   if n < 0 then 0.0
   else pos (n - 1) +. 1.0 /. (float_of_int (4 * n + 1)) -. 1.0 /. (float_of_int (4 * n + 3));;

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS