- 追加された行はこの色です。
- 削除された行はこの色です。
*予定のみ [#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;;
**Exercise 5(下村) [#s9e70b19]
(* inord *)
let rec inord t l =
match t with
Lf -> l
| Br(x,left,right) -> (inord left (x :: inord right l));;
(* postord *)
let rec postord t l =
match t with
Lf -> l
| Br(x,left,right) -> (postord left (postord right (x::l)));;