Chapter 2 データ型 - 2.1 単純データ型 - 2.1.3 文字

文字に行きます!


char? で文字かどうか確かめる。

gosh> (char? #\c)
#t
gosh> (char? 1)
#f
gosh> (char? #\;)
#t

うん。関数名に ? が使えるのはでかいよな。わかりやすい。scheme の場合は - も使えてウラヤマス。

空白文字は#\ 、あるいはより読みやすく#\spaceと書くことができます。

はぁ、わかりにくいな。\ の後はなんなんだ。

gosh> (char? #\)
(返ってこないので Ctrl-C を押した)
*** ERROR: unhandled signal 2 (SIGINT)
Stack Trace:
_______________________________________
gosh> (char? #\ )
#t

わかりきっていてもやる。なぜか。

gosh> (char? #\space)
#t

わかりにくいから普通こっちだな。
タブは #\tab かな?

gosh> (display #\tab)
	#<undef>

おk。


文字の比較:

gosh> (char=? #\a #\a)
#t
gosh> (char<? #\a #\b)
#t
gosh> (char>=? #\a #\b)
#f

ポリモーフィズムとか無いな。でもまぁわかりやすい。
ん?ホントに無いのか?

gosh> (=? #\a #\a)
*** ERROR: unbound variable: =?
Stack Trace:
_______________________________________
gosh> (<? #\a #\b)
*** ERROR: unbound variable: <?
Stack Trace:
_______________________________________
gosh> (=? #\a #\b)
*** ERROR: unbound variable: =?
Stack Trace:
_______________________________________

ねぇwww。なんかポリシーがあるんだろうな。scheme って型大事なのかな? ん?もしかして、関数「型」言語って「関数型」っていう「型」があるの? いやいやいやいや、「手続き型言語」って言葉もあるし関係ないな。


あーでも、比較演算子(っていうか関数)にも ? をつけるっていいな。思いつかなかった。真偽を問う関数には全部 ? を付けりゃいいんだよ。Ruby で試してみよう。

if hoge >? fuga
   puts "hoge の方がでかい!"
end

微妙……だけど、馴れそうな気もすぃ。


時間切れ、今日はここまで。また来週 ノシ