I have a really strong memory from years ago of Guy Steele saying roughly "Lisp is a Black Hole: if you try to design something that's not Lisp, but like Lisp, you'll find that the gravitational forces on the design will suck it into the Black Hole, and it will become Lisp".
(抄訳)何年か前Guy Steeleが言ってたっけ「Lispはブラックホールだ。Lispに似た言語をデザインしようとすると、その引力に引かれて結局Lispになってしまう。」
λの時代来たる!! (スコア:0)
Re:λの時代来たる!! (スコア:1)
Lambda Camel Perl 6って何なのか知らないのですが、Perl 6では従来のclosureの他に、blockがすべてclosureと見做されるようになって、新しい記法が追加されるという 話 [perl.org]の関連でしょうか?
λの時代なのかどうかは正直よく分かりませんが、 Javaにクロージャ [srad.jp]のストーリーでも 紹介 [srad.jp]されているように、 C++にもlambda式を入れる提案があるようで。もしかすると流行ってるのかなあという気もちょっとしま
Re:λの時代来たる!! (スコア:0)
Guy Steel
Re:λの時代来たる!! (スコア:0)
それだけ括弧の有無(というか文法)が重要だったということですか。
Lispの方言で、そっち方面に頑張っているものはないのでしょうか。
Re:λの時代来たる!! (スコア:2, 興味深い)
;; 「実はRubyやPython等は見栄えを変えたLispなので、LispはRubyやPythonのいる正にその位置に(も)いる」
;; という主張をする人 [srad.jp]もいるかも? (#1068899さんネタに使ってごめんなさい)
「RubyやPythonの位置」って何だろうと考えていて、 ここ/.Jとかでも時々見掛ける展開、「RubyやPythonはトイプログラムにしか使われていない」なんて煽りに対し、 「いやいや実は○○はRuby(またはPython)を使ってる」と返答が帰ってくる、 お決まりのパターンを連想しました。 これになぞらえて想定問答をやってみると、こんな感じになりましょうか。
「LISPなんて使われてない」→「いやいや、EmacsがEmacs Lispで書かれているのは言うに及ばず、 画像処理の定番GIMPのScript-fu [gimp.org]はSchemeだし、 かつてGNOMEの標準Window Managerだったsawfish [sourceforge.net]が使っているrepもLISPだし、Maxima [sourceforge.net]とか……」
「商用ソフトでは使われてない」→「えーと、AutoCADはAutoLISP [wikipedia.org]でカスタマイズできるらしいですよ。」
「実用的なシステム、大規模システムとか高信頼システムには使えない」→「Paul GrahamはよくViawebを立ち上げた話 [practical-scheme.net]を引き合いに出してLISPの有用性を語ってますね。 米国防省の航空気象情報システムはSchemeでXMLデータ処理 [okmij.org]をしているらしいし、 Yahoo! Picks [yahoo.com]てサイトも Schemeを使って [utah.edu]構築したそうですよ。 そういえば、NASAの火星探査でもCommon Lispが大活躍 [franz.com]って知ってました? 他にも色々 [franz.com]と……」
ジョークのネタにもなるLISPの括弧ですが、 その括弧もまた、LISPに比類無き力を与えているものの一つなんだ、 という考え方もあります。 例によってPaul Graham氏も 熱く語って [dreamhost.com](「マクロ」について語っている辺り)おります。^^;そんなわけでCommon LispやSchemeが今もS式を直接使っている一方で、 プログラムを生のS式で書かないように「頑張っているもの」も過去から現在まで、 これまた実はたくさんあります。
そもそも1960年のJohn McCarthyの歴史的な論文 Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I [stanford.edu] の中からして、処理対象のS式と区別するために、 M式という(幾分他の言語の関数表記と似ているかもしれない)記法が登場しています (元ACさんの意図とはちょっと目的が違うかもしれませんが)。
LISPを、S式表記でなく、他の言語のような「普通の」表記で書く試みは、 その後も繰り返し登場します。 例えば数式処理システムREDUCE [wikipedia.org]は、 Algol風文法を持つRLISPで書かれているとあります。
もっと有名(?)な例としては、1967年に作られ、 1980年代ごろ日本でも児童教育用あるいはそのタートルグラフィックスで話題になった LOGO [mit.edu] は、括弧を(あまり)使わず書けるように工夫されたLISP方言の一種だったと言えます。
最近の例としては、 Dylan [opendylan.org]が最初はS式を使っていたのを、 その後Algol形式の文法に変えています。 どんな感じかはWikipediaの Dylan [wikipedia.org]の項目が比べやすいと思います。 DylanはAlgol風表記なのにマクロ [opendylan.org]を持っているという辺り、かなり「頑張っている」かもしれません。 ……と言いつつ私自身は勉強不足でDylanを分かっていないので、 ボロが出ないようこの辺で退散します。(_ _)
余談になりますが、 Lisp以外でも関数型言語を使っていると、 ちょっと油断するとLispみたいに括弧だらけの プログラムになっていることがよくあります。 関数Aを適用した結果にBを適用し、その結果にCを適用して……なんてことが 多いからですが、 そんな時「じゃあ最初からS式で書いとけばいいじゃんっ」とか思ったりもします。 しかしその一方で、Haskellの$オペレータを知った時、 簡単な仕掛けなのに、括弧を減らして見やすくする(ような気がする)工夫として、 ちょっと面白いなあと思ったりもしました。 私自身の中でも、S式の方が見やすいのかそうでないのか、 実はまだアンビバレンツな感じなのかもしれません……。 レベル6 [practical-scheme.net]はまだ遠い(それよりずっと下も)……。^^;