文字列
朝っぱらからパン食べ過ぎ。昼飯の準備もできたし、腹ごなしに目覚めのscheme(?)。というか真横で塊魂を嗜む息子(2歳)。うーん、変な家庭 ・ω・
文字
#\ かなるほど(そんだけかよ)。
#\spaceとかもつかえるらしい。他に何があるのかな、、とread.cを見ると
{ "space", SCM_MAKE_CHAR(' ') }, { "newline", SCM_MAKE_CHAR('\n') }, { "nl", SCM_MAKE_CHAR('\n') }, { "lf", SCM_MAKE_CHAR('\n') }, { "return", SCM_MAKE_CHAR('\r') }, { "cr", SCM_MAKE_CHAR('\r') }, { "tab", SCM_MAKE_CHAR('\t') }, { "ht", SCM_MAKE_CHAR('\t') }, { "page", SCM_MAKE_CHAR('\f') }, { "escape", SCM_MAKE_CHAR(0x1b) }, { "esc", SCM_MAKE_CHAR(0x1b) }, { "delete", SCM_MAKE_CHAR(0x7f) }, { "del", SCM_MAKE_CHAR(0x7f) }, { "null", SCM_MAKE_CHAR(0) },
てな感じ。なるほど。htってなんだろうってhorizontal tabかな。
文字列
基本immutableなのか。80%のほうを最適化するのは流石だとか思った。整数の話もそうだけど、設計する側の視点でモノを見る、というのは重要だとか思った。ツッコんでもらえたのはものすごい幸運だった。感謝しまくり。
write-to-string <-> read-from-stringで簡易シリアライズと。
gosh> (read-from-string (write-to-string '(a b c))) (a b c)
あとは joinとか appendとか変換とかかな。ふむむ。
文字列補完とか
#` で文字列書いて ,の後ろのS式が展開。変数を展開したいだけのときは ,|var|のように||でくくると安全。これは変数専用でapplyを書くとエラー。
gosh> #`"hoge,|(* 4 52)|," *** ERROR: unbound variable: |(* 4 52)| Stack Trace: _______________________________________ 0 (x->string |(* 4 52)|) [unknown location]
まあS式は区切りが明らかだし当たり前か。空白で区切れない場合にカンマ自身を明示的に出したい場合は ,,(ダブルカンマ)。
確かに普通の文書なら , の後は空白であることが殆どか。全角スペースはどうだろう?
gosh> #`", " *** ERROR: unbound variable: 臓臓 Stack Trace: _______________________________________ 0 (x->string 臓臓) [unknown location]
ははは、やっぱダメか。