2012なんつータイトルだ。なんか無駄に感動したので執筆途中のClojure連載を放置してこっちを記事にします。事の発端はこれ→池澤あやかのプロフィールう、美しい・・・。これが新人類ってやつか。「Ruby始めたら彼女ができました!」だの、「Ruby始めたら腰痛が治りました!」だの、にわかには信じがたいRubyのスーパーパワーがまことしやかに囁かれる昨今ですが、あながち全てがウソとも言い切れないのかもしれません。プログラマタレントとして新ジャンルを開拓するつもりなのか、それともプロのプログラマとしての人生を歩むのか、彼女の今後の人生が非常に気になる所ではありますが、今日記事にしたいのはそんなことではありません。口癖:うわあ...こんな上から目線のセリフ言われてぇ。いう話、では、なく、て。好きな関数:ifこっちです。Ruby女子と高らかに宣言しておきながら好きな関数がifというのは解せぬ。Rubyistではない僕でもRubyにおいてifが関数ではなく制御構文であることは知っています。Rubyの話ではないということでしょうか。確かに「好きなRubyの関数」などとはどこにも書かれていません。それでは、ifを関数として実装している言語とはなんでしょう。調べましたが僕の知る限りでは存在しないようです。謎は深まるばかりなのでここで少し視点を変えてみましょう。「好きな関数は?」と僕が聞かれれば、おそらく自作した関数のうちどれかを選びます。人が作ったものよりも自分が作ったものに愛着が湧くのは当然のことです。彼女もそういうことなのではないかと。自分が作ったif関数が一番好き、という意味なのではないかと。その関数をifと呼ぶ以上、その自作関数を作成した言語における本物のifと全く同等の振る舞いを行う関数であることが推察されます。それでは彼女は、Rubyでif関数を自作したのでしょうか?それは不可能です。...endこんな形をしていて、そもそも「関数」として扱うことは難しい構造です。ifを関数として扱うためにはまず第一にthenとelseの中身が複数ステートメントによるコードブロックではなく単一の式である(つまり、引数としてif関数に渡せる)必要があります。第二に、こちらのほうが重要ですが、言語レベルで遅延評価を実装していることが求められます。遅延評価が必要とはどういうことなのか。説明のためにSchemeというlispの方言を用いて自作ifを実装してみましょう。else-clause)))使ってみます。