Your Functional Programming Language Nightmares Come True.
関数型言語の悪夢がやってくる
公式サイト: http://www.eleves.ens.fr:8080/home/madore/programs/unlambda/
Unlambdaは、obfuscated programming languages (混乱させるプログラム言語、といったところでしょうか) の一種として開発された言語です。 しかしただそれだけではなく、純粋関数型言語というもう一つの特徴も持っています。 そのためオブジェクトは関数しかなく、数値や文字列などというものは(組み込みでは)存在しません。 しかしこの極限的な状況でのプログラムには、実に楽しいものがあります。 このページでは、そんなUnlambdaのプログラミングの解説を行います。
Unlambdaに関する日本語の解説がほとんど見当たらなかったので (Cマガの03年04月号の「千語万語」に紹介されているのしか見当たりませんでした)、 用語は私が適宜適当に訳しています。悪しからず。
本家のページの一番最初に載っているサンプルプログラムを拝借します。 フィボナッチ数のアスタリスクを行ごとに表示するプログラムです。
```s``s``sii`ki `k.*``s``s`ks ``s`k`s`ks``s``s`ks``s`k`s`kr``s`k`sikk `k``s`ksk
理解していただけたでしょうか? なんかすごいです。 すごいけど、よく分かりませんね。 このページの解説を最後まで読んでも、多分この関数は読めないと思います。 でもひょっとしたら、この関数を自分で書けるくらいにはなっているかもしれません。
いくつかの言語で書かれたUnlambdaのインタプリタが用意されています。 公式サイトの一番下の方に、"Unlambda distribution"という項があるはずなので、 そこからダウンロードしてください。 あとは、ダウンロードしたフォルダの中にあるREADMEファイルの説明に従いつつ、 お好きなコンパイラを使ってコンパイルしてください。
C言語版は、cフォルダではなくc-refcntフォルダに入っているものを使ったほうがいいでしょう。 多分ほとんどの方の環境で、cフォルダに入っているほうはコンパイル通らないと思います。