アカウント名:
パスワード:
かっこがあるから、Lispはいいんだよ、としか言いようがないですねえ。
マクロをいくつか書いてみれば、かっこがあるからLispのマクロは最強なのだということがわかります。リーダーに読み込まれたLispのコードは構文木となり、具体的には「リスト」として表現されます。リストの具象的な表現としてS式はごく自然なものです。マクロはプログラムコードであるリストを操作してコンパイラに渡します。コードがリストとして表現されるため、Lispのリスト操作関数を自然に利用できます。(単なる文字列をマクロで操作するのではなく、入れ子になったリストをマクロで操作できるのが大事なのです。)
中途半端なシンタックスを導入しても、リーダーに読み込まれた後はリストになるという部分は変えられないはずです。すると、元のコードから構文木=リストが一対一にイメージできないと、かえって迷惑です。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
カッコだけでもなんとかならんもんだろうか (スコア:2, 興味深い)
済む話なのかもしれませんが,やっぱりあの
括弧の多さにはくらくらしてしまいます.
私は lisp といえば Emacs Lisp くらいなのですが,
(先輩はそれは lisp じゃないとか言ってたけど)
普段使いのツールを Python で書いてる立場から,
もし lisp の括弧の対応関係を,インデントで表現すれば,
それはただ見かけだけのことなのかもしれないけど
見やすくなるかもしれないなぁ,と思うのです.
が,S式を普段使いでがりがり書いてる人にとっては
「それをすてるなんてとんでもない!」なのかもしれません.
ホントのところ,やっぱりとことんカッコにはこだわって
いきたいのが lisper の信条なのでしょうか?
かといって自分も C/C++ 書くときは {} の使用に
何の疑問も持っていないのですが・・・
屍体メモ [windy.cx]
Re:カッコだけでもなんとかならんもんだろうか (スコア:2, 参考になる)
これに対する回答として一番よくまとまっているのは Scheme 処理系「Gauche」の
作者である Shiro さんが書いた Lisp:S式の理由 [practical-scheme.net] だと思います。
Lisp(Scheme) 使いの私がよくまとまっている、と言っても説得力がないかもしれませんが、参考までに。
Re:カッコだけでもなんとかならんもんだろうか (スコア:1)
かっこがあるから、Lispはいいんだよ、としか言いようがないですねえ。
マクロをいくつか書いてみれば、かっこがあるからLispのマクロは最強なのだということがわかります。リーダーに読み込まれたLispのコードは構文木となり、具体的には「リスト」として表現されます。リストの具象的な表現としてS式はごく自然なものです。マクロはプログラムコードであるリストを操作してコンパイラに渡します。コードがリストとして表現されるため、Lispのリスト操作関数を自然に利用できます。(単なる文字列をマクロで操作するのではなく、入れ子になったリストをマクロで操作できるのが大事なのです。)
中途半端なシンタックスを導入しても、リーダーに読み込まれた後はリストになるという部分は変えられないはずです。すると、元のコードから構文木=リストが一対一にイメージできないと、かえって迷惑です。
Re: (スコア:0)
GIMPのScript-fuやSOMARのCALを見て考え直したさ。
決して「プログラマー向け」でない、ただ
「あーしてこーしてを自動化させたいなあ」を実現するマクロ言語に
カッコまみれのポーランド記法だ。
そういうもんだと思ってしまえば人間、どうとでもなるのかもしれん。
(最初に「まともな」プログラミング言語を学んだりしていない人が多く使うというのもポイントだろうね)
作る側としては少しでも処理負荷を抑えたくてパーサーを簡単にしたかった
だけなんだろうけど。
Re: (スコア:0)
他の大抵の言語における「文法」とは、ちょっと違う気がします。
Lispのは、もうちょっとメタなんですよ。
あえて他の言語のと一番近いものをあげれば
「Lispの括弧」は、
「ほかの言語の空白(などの単語区切り)」のようなもの、だと思ったほうが近いと思います。
(普通の空白と違い、括弧の場合は「開きか閉じか」の区別が有るために、ずいぶんと雄弁ですが。)
空白そのものというよりは、
空白の前後にある2つの単語(あるいはそれを連ねて3つ以上の単語)
の組み合わせによって初めて意味を成す、という感じに。
Lispの括弧
Re: (スコア:0)