Chapter 2 データ型 - 2.1 単純データ型 - 2.1.2 数値

忙しいけどやるよ。

gosh> (number? 42)
#t
gosh> (number? #t)
#f
gosh> (complex? 2+3i)
#t
gosh> (real? 2+3i)
#f
gosh> (real? 3.1416)
#t
gosh> (real? 22/7)
#t
gosh> (real? 42)
#t
gosh> (rational? 2+3i)
#f
gosh> (rational? 3.1416)
#t
gosh> (rational? 22/7)
#t
gosh> (integer? 22/7)
#f
gosh> (integer? 42)
#t

42 か……。「人生、宇宙、すべての答え」ってギークの一般教養なのかな?


number? と integer? の違いが不明確なので確認。
number?

gosh> (number? 2+3i)
#t
gosh> (number? 3.1416)
#t
gosh> (number? 22/7)
#t

integer?

gosh> (integer? 2+3i)
#f
gosh> (integer? 3.1416)
#f
gosh> (integer? 22/7)
#f

おk。number は数値一般。integer は整数。まぁ、読んだまんまなんだけど。


real? と rational? の違いを調べるために実数だけど無理数な値を食わせてみたいんだけど、どうすればいいんだろ? とりあえず進む。

gosh> (real? 2+0i)
#t

ふむ。賢い。

gosh> (real? 22 / 7)
*** ERROR: wrong number of arguments for #<subr real?> (required 1, got 3)
Stack Trace:
_______________________________________

半角スペースはセパレータ。

gosh> (real? (/ 22 7))
#t

おk。


違いが気になる。

gosh> (display (* 22/7 7))
22.0#<undef>
gosh> (display (* (/ 22 7) 7))
22.0#<undef>

どちらも一緒で遅延評価ってことですか?


途中だけどここまで。「つづくっ」