正規表現も気になるけど、そうじゃない方法がとりあえず取り組むべきものだと思ったのでCommonLispにはあるけどRacketには無いプロシージャを自作するか!って決めたところまででしたね。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
でも結局ちょっとだけヒントをもらおうかな・・とか思ってチラ見して
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
はぁ~・・可変長引数!なるほど~。リストとしてまとめられるのでapplyが使えるって事なんですな?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これ、2つを組み合わせたら行けるだろうな~とは思ってたんですけどこんなにシンプルに出来るとは!今まで出くわさなかったけどdefineで述語を作るときってこういう感じになるんですね。なんかcondで場合分けをして・・とか考えてたけど述語自体を作ってしまえば良いとは~・・カンニングして助かった(^_^;)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
各文字列に適用する順序は不定!?ここでの違和感が伏線だったか・・
偽の場合のsに違和感。え・・?ひょっとしてmap系の作用のイメージを全く勘違いしてたのでは・・。mapって内部的には頭から再帰を繰り返して全部に作用するのかと思ってたけど、すべての文字に対して同時に判定と値を返すことが行われてるってこと・・かな?偽の時に文字列をそのまま返すってことは・・だから適用する順序は不定で良いってこと・・なのか?
で、とりあえずコメント書きながら最後まで。何度もしつこいけど述語を作るって盲点でしたわ。
リンク貼ってもらってた「Hyper Spec」とかその他SRFIとかのコードをやっぱりちゃんと読んでみないとイカンと思いました。手塚治虫の漫画入門風に考えるとストーリー漫画は4コマ漫画の連続(集合?)ですってのに例えることが可能だとすると組み込みプロシージャとかライブラリのコードを読み書きするのは大事な気がするなぁ。
ニヤリ、なるほど。
次回は正規表現バージョンの書き方をちょっと勉強させていただきます!