手順終わりこれを一度に実現させることはできないだろうが、暇なときにちょっとずつ作ってみよう。|2007年12月20日やっとキャストチェーン解けた二年ぐらい前に買ったパズルがやっと解けた。二年間解き続けたわけではないんだけどね。キャストパズルシリーズで解けなかった最長記録だ。解いてみると、なぜ解けなかったのか不思議でならないくらいあっけないものだ。この達成感は、なにものにもかえがたい。分かりやすい日本語の引数を考える先日は、箇条書きで"言語"について描写してみた。自分自身で読み返してみて、いろいろ問題点に気がついた。助詞が使えるというのはとても面白いとは思うのだけど、考えればすぐに、述語の目的語を「て・に・を・は」などの助詞だけで受けられないのはわかる。いう意味でより拡大した意味を持たせて後置詞と呼ぶことにしたのだけど、さらに考えを進めるとすべての後置詞で受けるというのも無理がある。扇形の面積を求める述語を考えてみる。扇形の面積を求めるには、中心角、半径が必要になるが、この中心角と半径にはどんな助詞をつけるべきだろうか。いいものが思いつかない。助詞に限らず後置詞を添えたらいいだろうか。前回説明はしなかったが後置詞の意味は「後ろに置くワード」という意味で使っている。「Aという中心角、Rという半径の扇形の面積」という表現だろう。「という中心角」「という半径の」という後置詞を使う方法だ。これだと後置詞という考えに縛られて、日本語としての自然さを犠牲にしてはいないだろうか。間違った日本語ではいないが、「という」という言葉が頻出することに、くどさを感じてしまう。数学の教科書ではどんな表現を使っていただろう。「中心角A、半径Rの扇形の面積」ではないだろうか。できればこんな形で表現できた方が僕には美しく感じられる。これだともう後置詞を使ったいままでの構文とは違うものになってしまう。これが実現できるのなら、構文を壊してでもこっちの方がいい。これを一般化させると、仮引数への代入を述語の呼び出し文に明記できるということになる。考えてみると、この実引数は式の可能性だってある。なると人間はともかくインタプリタが解析するのが一段と難しくなるだろう。思い通りの解釈が無理になるかもしれない。実引数の部分を括弧で囲んで明確にすればどうだろう。括弧で囲むというのはいいかもしれない。構文的にも今までの規則を拡張して解決できるだろう。式中だと括弧()は優先順位を変える記号として理解できるが、文章中では補足説明的な役割になってしまう。文章表現を中心にするプログラム言語ならば、式以外での()はあまり使わない方がいい。角括弧「」はどうだろう。リストを使うのは構文的に楽に組み込める。本来のリストとの区別が問題になってくる。リストとワードでは表されるものが大きく違ってしまう。仮引数名を括弧の前に置くという特異な構文を使うので、別の記号が使えるのならばそのほうがいい。専用の括弧が分かりやすいのではないだろうか。中括弧{}はまだ他のことに使っていないから、それにしよう。結局こうすることにした。中心角{A}、半径{R}の扇形の面積そして、仮引数を明示しなくていいときは、仮引数と波括弧を省略できる。AにBを足すのようにできる。内部的には反転させて、次のように処理させる。読点'、'はただの区切り記号としていたが、その役割も変える必要がある。このときの読点は並列の記号としてはたらく。後続する直後の目的語と並列され、そして同じ述語に所属する。その並列している目的語と一緒になって、全体をその後置詞が受けているとみなす。後続する目的語の直後に後置詞が無く、かわりに読点がある場合は、同様にして後続の目的語も加えて並列してあるとみなす。必要なだけこれを繰り返す。これができれば自然な文章になるだろう。「、」に近いが、「と」という演算子も作ろう。これは後置詞のように振る舞う演算子だ。二項演算子「と」:左右の項をひとつのリストにする演算子。「と」が述語のすぐ左隣の位置にあるときは演算子ではなく、後置詞とみなされる。演算子「と」は記号ではない。したがって「と」に隣接するものは「と」によって分割されることはない。この二項演算子「と」の存在のために後置詞「と」を右から二番目以降に伴う述語は定義できない。逆に演算子「と」の意味で「と」を使う可能性のある述語は、実引数がリストであるかを判断し、リストであった場合、そのリストの要素を順に処理を行うように手順を記述することになる。「和」という述語がその例になる。この述語は後置詞「の」だけを伴う。実引数がリストの場合は、それらを数値とみなし、その合計を計算する。実引数が数値を表すワードならばそれをそのまま返す。「和」は、自分への引数が演算子「と」によって作られたものであるかは知らない(知れるように細工してもいいが)、そのため演算子「と」を使わずに直にリストの形で引数を与えてもいい。