「switch文を使いたくないばかりに」のその後

以前「code avant-garde - ものすごいハイウエスト日記」というものを書いたのですが、そのあといろいろ考えてみると結局じぶんがやろうとしてたことってラムダ計算なんだな、ということに気づきました。

ものすごく乱暴ないいかたをしてしまうとラムダ計算とは「すべてを1つの引数の関数で表現してしまう」というハードコアなものです。これをプログラムってステージで話をすると「変数の扱いも関数で表現」「条件分岐も関数で表現」「ループも関数で表現」「数値なんかも関数で表現」「もつのろんオブジェクトという概念も関数で表現」etc... とありとあらゆるものを関数で表現するということになります。半世紀以上前に生まれたlispは生まれたそのときからこの性質を持ち、closとかmacroというものに生かしてきたわけで、じぶんの性質を利用して言語仕様そのものをアップデートさせてきたわけです。そりゃLOL本で「lispは世界で最も過激な言語」とかいっちゃいますよね。

というわけで「関数ですべてを表現」ということは「クロージャでもすべてを表現できるのでは」と思っていたところ、とてもすばらしい記事を発見しましたよ。

2009-04-09

Groovyのクロージャを使ってラムダ計算の説明をされていて、すごく分かりやすいです。この記事を読ませていただき「あ、おれってこれやりたかったんじゃないのかな」と思ったわけですね。