Chapter 2 データ型 - 2.2 合成データ型 - 2.2.4 データ型間の変換

型名->型名 で変換! 美しい! (ちょっと冗長だが)シンプルなルール! scheme って冗長さを厭わず「正しい」感じだな。

gosh> (char->integer #\d)
100
gosh> (integer->char 65)
#\A


イレギュラーっぽいのを与えてみる:

gosh> (integer->char 0)
#\null
gosh> (integer->char -1)
#\真真
gosh> (integer->char -2)
#\真疹
gosh> (integer->char 128)
#\
gosh> (integer->char 65535)
#\鐃
gosh>

wwwww

gosh> (string->list "hello")
(#\h #\e #\l #\l #\o)
gosh> (number->string 16)
"16"


数値型も色々あるので:

gosh> (number->string 1/2)
"0.5"
gosh> (number->string 1/3)
"0.3333333333333333"
gosh> (number->string 2+3i)
"2.0+3.0i"

うーむ、complex 以外は評価してからか。

gosh> (string->number "16")
16
gosh> (string->number "Am I a hot number?")
#f
gosh> (string->number "10000" 2)
16

ふむ、型はあってるけど、ふさわしくない値は偽か。

irb(main):002:0> "Am I a hot number?".to_i
=> 0

Ruby は 0 ですな。ちょっと Perl っぽい?

gosh> (symbol->string 'symbol)
"symbol"
gosh> (string->symbol "string")
string


ここまで。