*予定のみ [#uf2a469d]
--
- 日時 :2006/6/12 (Mon)
- 場所 :名大 理学部1号館(多元数理科学研究科) 307室
- 時刻 :18:00〜19:30
- 参加者:??名
- 話題 :
-- hoge
-- foo
-- bar

#comment

----
#contents

* 5章 Exercise 続き [#e8ab579a]
**Exercise 6. けいご [#k186bd76]

**Exercise 7. みずの [#a2b0a0db]
 (* fromからtoまでの数列を生成 *)
 let rec range from_value to_value = 
    if from_value > to_value then []
    else from_value::(range (from_value + 1) to_value);;
 
 (* 整数版sqrt *)
 let sqrt_int x = int_of_float (sqrt (float_of_int x));;
 
 let f r x xs= let y = sqrt_int(r - x*x) in
              if x > y && (x*x + y*y = r) then
                 (x,y)::xs
              else
                  xs;;
 
 let squares r = List.fold_right (f r) (range 0 (sqrt_int r)) [];;

* 6章 Exercise [#j2d045ed]
**Exercise 2(樋口) [#vfa96a64]
   nat上で
    int_of_nat,
    mul,
    monus を定義せよ 

 参考 nat の定義
  type nat = Zero | OneMoreThan of nat ;;

 let rec int_of_nat = function
   Zero -> 0 |
   OneMoreThan n -> 1 + int_of_nat n;;

 let rec add m n =
  match m with
    Zero -> n |
    OneMoreThan m' -> OneMoreThan (add m' n);;
 が定義されているとして
 
 let rec mul m n =
  match m with 
   Zero -> Zero |
   OneMoreThan Zero -> n |
   OneMoreThan m' -> add n (mul m' n);;
  
 let rec monus m n = 
  match m with
    Zero -> Zero |
    OneMoreThan m' -> match n with
                       Zero -> OneMoreThan m' |
                       OneMoreThan n' -> monus m' n';;

**Exercise 3(末次) [#pb712e62]
 let rec minus m n = 
   match (m, n) with 
       (m, Zero)  -> Some m
     | (Zero, _) -> None
     | (OneMoreThan k, OneMoreThan l) -> minus k l;;
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS