Gaucheプログラミング(立読み版)

比較 Slideshow

数値を比較するための述語は以下があります。

  • =
  • <、<=、、>、>=

=は数値の等価性を確かめる述語です。実行例は以下です。

 gosh> (= 1 1)
 #t
 gosh> (= 3 5)
 #f
 gosh> (= 3.3 3.3)
 #t

また、複数の値の等価性を確かめることもできます。

 gosh> (= 1 1 1)
 #t
 gosh> (= 3 3 3 4)
 #f

残りの述語は数値の大きさを比較するための述語です。使い形は=と同じで複数の数値を渡すことができます。

 gosh> (<= 1 2)
 #t
 gosh> (> 2 4)
 #f
 gosh> (< 3.333333333333333 3.333333333333334)
 #t

また以下の式の場合

(<= obj1 obj2 ... objN)

以下の条件が成り立てば真となります。

obj1 <= obj2 <= ... <= objN

複数の値の大小比較は例えば以下の場合に使えます。

月の値は1から12までの範囲です。月の値をmとすれば、 ごく単純には以下のとおりに書けます。

(if (and (>= m 1)   ;; 月の値mが1以上、かつ、
         (<= m 12)) ;; 月の値mが12以下か?
    ...
    ...)

数値比較手続きは可変個の引数をとれるので、以下のとおり書くことができます。

(if (<= 1 m 12) ;; 月の値mが1以上12以下の範囲内か?
    ...
    ...)
 by eji

Comment Form:

コメント・トラックバック規約を必ずお読みください。

 

Comments:

2007/04/29 10:43:16 shiro
「数値の比較に整数を使いましたが」以降は余分っぽいのでカットを提案。
替わりに例の中に適宜実数や複素数を混ぜる。

複素数は大小比較できないことには触れても良いかも。

= は正確/非正確を無視するが、eqv? は正確/非正確も合致してなければならない、
っていう豆知識はどっかに押し込めたいけど、ここではまだeqv?が出てきてないので
後の方かな。いちおうメモ代りに書いとく。

Trackback URL: http://karetta.jp/trackback/book/007067/007071

Trackbacks:


このサイトについて|ヘルプ|Q&A|個人情報保護|プライバシーポリシー|利用規約|コメント・トラックバック規約|削除規程|広告掲載
Copyright (c) 2005-2007 Time Intermedia Corporation