「それは、なんですか」の、「それ」は、なんですか?

文脈理解で擬似自然言語プログラミングか…!?という話。
で、最近ちょい話題になってるひまわりなんだけど、この紹介を見て、ちょっと見た目のネタっぽさ(失礼)からは想像できない実力を感じてしまったわけだ。なかなかそれっぽく書けるように見える。

あー、このトリックはどうなってんだ?と思って、まとめっぽいのをちょい読んでみる。
うーん、あまり細かく読んだわけではないし、実際に動作させたわけではないけど、大体わかってきた。

まず、いっこめは、助詞、助動詞を引数とともに命令にわたす感じ?「副詞付き引数」とでも呼ぶべきだろうか。「Aから、Bまで」とした場合は、("A"+から, "B"+まで)というふうになってて、あと、それをどう料理するかはライブラリ次第、っていうふうにすればなんとなく説明できるような気がする。

で、もういっこは、「それ」変数の利用、のような感じがする。
特に出力先を指定しなかった場合は出力は「それ」変数に入れられる。特に引数を指定しなかった場合は「それ」変数から値を取ってくる…って、まんまPerlの$_変数のような匂いがするのだが。
とにかく、Larryは間違っていなかった。英語だからわかんなかったけど、暗黙の変数っていうのは、自然言語の匂いを出すことが可能になってるのだ。簡単な原理だ。口語ではいちいち説明してたら、くどいから、直前のものを指定する場合は特に何も指定しないのが普通。よーするに、「そのぐらい文脈から理解してくれ」っていうことだ。
で、ここで、ふと思うのである。変数一個でこれほどまでに文脈っぽいものを実現できて、しかも、それっぽく見えるんだったら、文脈っていうのをもっと拡大してなんとかしたらもっとそれっぽくなるんじゃないだろうか。

例えば、こんな感じでどうだろうか。
実行時には、常に一個の文脈環境というものが存在する。ここには、「最後に評価したもの」とか、「今の気分」だとか、「失敗度」「成功度」「対象」「被害者」、その他色々な者を含んでいる。
で、ありとあらゆる関数は、その文脈環境を適当に(ここでの「適当」は正しい意味での「適当」)使用したり操作したりすることが許されている。さらに、各構文要素さえもそういった使用や操作が許される。
みたいな感じにしとく。

たとえば、

もし、成功した ならば
   「成功」と表示する

こういうのがあったとする。すると、ここでの「もし文」は肯定で成立してるので、成功度はプラスとなって、「表示する」命令がそれに反応して、

うっひょう!成功!

っていうふうに表示するし、

もし、成功しなかった、ならば
   「失敗」と表示する

となっていたら、否定で成立してるので、失敗度がプラス。表示は

バーカバーカ。「失敗」ダヨー。あはははは。バーカバーカ。バーカ。ロリコンー。

と表示する、といった感じ。
あと、変数の重要度とか。

a = 3
print a

3

としか表示されないけど、

a = 3
a = a + b
a = a + c
a = a + d

とかってなってると、変数aは重要なんだとみなされて、

'a'の値は => 3 <=

ってなってるとか、そういうの。

と、いうわけなんだけど、絶対こういうのってデバッグ大変だよなぁーとか思って、締めくくれないので、適当にプログラミング言語 「日本語」へのリンクを貼っといて他人任せ。