まずはインチキデバッグを使って動いた状態をご紹介しよう!
これこれ、これが欲しいんだなぁ~。ではどこを置き換えたらちゃんと動くのか!?ってのを見てゆこう
まずはgame-readプロシージャ
これが僕が書いたものだけど・・動きません
続いて動く例。こちらはSchemeに移植してらっしゃる方のを拝借してきました。ふうむ・・大枠同じようなもんなんだけどifでnullの場合が追加されてますね・・これは散々やった再帰の型!あ、再帰の脱出!
game-readが直るとエラーが変化します。うーん、ここはね~自信無いことに自信があったよ!Cametan42さんのコードを拝見するとformatを使って全く違う形になってたのでw けどまあ、一応まんまの形で行けるかな?と試してみた状態ではあったんですよね
これが悪い例。そもそもtwek-textの引数が2つ抜けてます。入れても動きませんでした、言うまでもないけど
良い例。formatが必要なのか。"~a"って何?と思ったけどリストを文字列に変換するのか・・
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ぐはっ!サンプルあるのは良いけど・・複雑すぎて参考にならんw。
Commonlisp formatと共通だとすると・・と思って検索したけど、うーん?
まあけど結果と対応表の備考から推察するとこの書き方でリストを文字列化出来るってことで!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
まず文字セットって何だろうw?どうやら文字コードとかそういう意味らしい?つまり空白スペースを持つ部分を呼び出してそこに( と )を付け足す? あれ?ちょっと待てよ?これってstring-trimの2つ目の引数だから消す対象か・・・(いまさら)。じゃあchar-set:whitespaceが怪しいな・・特に:が怪しい。と考えてchar-set: や char-set:whitspace で検索したけど全然出てこない。と、SRFI 13を読んでると
あっ!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
あるやん!どうやらSRFIライブラリの文章はグーグルで引っかからない?
ま、それはそれとして・・どうやら文字セットってのは文字コードとは違う概念の模様。文字を概念別でカテゴリ分けしたもの・・なのか?とりあえずCharset:whitespaceってのは各種空白文字の集合ってことだな?多分。
ああ、その集合に()を含めるってことか!スッキリしたぜ~
で、game-printが直ったらエラーが変わってこうなる。まあ、tweak-textが駄目なんでしょうね。これも自信が無いことに自信があったんです
まずは動かない例
そして動く例。比べると最初の条件がwhen か if null かって事で。これも再帰の脱出が設定されてないからだろうな・・と。図々しいかも知れないけど再帰のエラーってあるあるだろうから「再帰おかしいよ!」とかメッセージが出ればなぁ・・
これで動きます!
が、まだ問題が残っているのだ・・上の動く方のTweak-textプロシージャはもともとのコードをちょっと改変した程度なんだけど
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cametan42さんのコードが全然違うんだなコレが!
次回はこちらのコードを研究させていただくことにいたします。
それと、これを書いてる時点でCametan42さんの新着記事通知が来ててヒントもらえてると思われるので拝見してまいります~(^o^)