2009/04/07

[The Little Schemer]Numbers Games

The Little Schemer」の読書ログはこちらにまとめてます。

 

ちょっと順序が飛びますが、先日Nubers Games(4章だったかな?)ってとこを読んでてすごく楽しかったので思い出しながら書いてみた。

加減乗除を再帰でやるというとても面白い章です。

がしかし、加減乗までしか思い出せませんでしたorzもう一度読み返してそのうちまとめます。というか憶えるものじゃないですね。

 

1を加算する手続き。

(define add1
  (lambda (n)
    (+ n 1)))

 

1を減算する手続き。

(define sub1
  (lambda (n)
    (- n 1)))

 

nにmを加算する手続き。

(define plus
  (lambda (n m)
    (cond
     ((zero? m) n)
     (else (add1 (plus n (sub1 m)))))))

 

nからmを減算する手続き。

(define minus
  (lambda  (n m)
    (cond
     ((zero? m) n)
     (else (sub1 (minus n (sub1 m)))))))

 

nにmを乗算する手続き。

(define multiply
  (lambda (n m)
    (cond
     ((zero? m) 0)
     (else (plus n (multiply n (sub1 m)))))))

 

追記:実行結果

(plus 10 15)
;; => 25


(minus 15 10)
;; => 5


(multiply 5 5)
;; => 25


(multiply 3 4)
;; => 12


(multiply 10 12)
;; => 120


(multiply 123456 10)
;; => 1234560

 

思い出しながら書いたので、書籍と違うかも。手続き名は全然違います。

 

 

The Little Schemer
The Little Schemer
posted with amazlet at 09.03.30
Daniel P. Friedman Matthias Felleisen
Mit Pr
売り上げランキング: 16078
おすすめ度の平均: 5.0
5 小さなScheme処理系で学ぶ数学基礎理論
5 Schemeが好きになります
5 英語であるのが苦痛にならない楽しさ
5 面白いスタイル

0 件のコメント:

コメントを投稿