結城浩のSICP日記 RSSフィード

2006-05-18

remainder remainder - 結城浩のSICP日記 を含むブックマーク

SICP 3.5.2(p.192)を見て。

割り切れるっていうのはあまりがゼロということ。

(define (divisible? x y) (= (remainder x y) 0))

追記:Ruiさんから、zero?を教えていただいた。

(define (divisible? x y) (zero? (remainder x y)))

整数以外にも。

(zero? 0.0)     ;=> #t
(zero? 0+0i)    ;=> #t
(= 0 0.0)       ;=> #t
(= 0 0+0i)      ;=> #t

RuiRui2006/05/17 23:39ちなみにzero?という述語もあります。

RuiRui2006/05/18 11:09勉強として考えると、こういう場合に関数合成を使ってみるのが面白いかも。compose手続きを使うとこんなふうにdivisible?を定義できます。
(define divisible? (compose zero? remainder))
http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_52.html#IDX475

hyukihyuki2006/05/18 21:54Haskell風に書くと divisible? = zero? . remainder でしょうかね。
おもしろいなあ。関数合成。

トラックバック - http://sicp.g.hatena.ne.jp/hyuki/20060518