[Mew-dist 1058] Re: mail-header-separator
守岡 知彦 / MORIOKA Tomohiko
morioka at example.com
1997年 6月 12日 (木) 11:49:52 JST
>>>>> <19970611220459X.kazu at example.com> にて
>>>>> “Kazu”= Kazu Yamamoto (山本和彦) <Kazu at example.com> さま曰く:
Kazu> > 僕が気になっているのは、閉じ括弧を別の行に記述するような
Kazu> > coding styleで、Emacs Lisp manual には
Kazu> > * 閉じ括弧を一行に一つずつ記述するような習慣をつけないでくだ
Kazu> > さい。Lispプログラマの間では、これはよくない書き方であると
Kazu> > されています。ただしまれに、多くの閉じ括弧が連続するような
Kazu> > ときに、それらを一つか二つに分けて記述するのが有効であるよ
Kazu> > うな場合もあります。
Kazu> > という記述があります。
Kazu> この説明には理由が見当たらず、とても主観的であると思います。どうし
Kazu> てよくよくないのか分からないので、納得できません。
多分、歴史的なものだと思います。古の伝承によれば(^_^;、括弧の対応をと
るような editor が無かった頃、括弧の対応をとって括弧を閉じるような括弧
(ここでは `]' としておきます;正確なのは忘れた;こういうのは小林君が詳
しいかな?)があったそうです。例えば、
(setq alist '((a . b) (c . d)))
は
(setq alist '((a . b) (c . d)]
みたいに書くことができます。こういうのを使わずにちゃんと閉じ括弧を全部書
くようになってからも、閉じ括弧ではインデントを表現しない慣習が定着していっ
たのではないかと推測します(あるいは逆かも知れないけど)。
Kazu> 上記が正しいとすると例えば、
Kazu> (setq alist '((a . b) (c . d)))
Kazu> を
Kazu> (setq alist '((a . b)
Kazu> (c . d)
Kazu> )
Kazu> )
Kazu> と書くのはお行儀がわるいことになります。
Lisp の世界の慣習からすればその通りだと思います。
Kazu> しかし、(e . f) を簡単に書き足せるという理由で後者を選んでも、僕は
Kazu> いいと思います。(C で配列の最後に "," が許されるのと同じ理由で。
Kazu> )
この目的からすると
(setq alist '((a . b)
(c . d)
))
で十分ですね(ただ、RMS 氏はこれも嫌いらしいです(半田さんから RMS に嫌
われない coding style を伝授してもらった(^_^;。coding standard には書い
てないけど半田さんが経験的に知った禁じ手というのもあるらしい。もちろん、
Emacs に付属させるというつもりが無ければどうでも良い話なんだけど))。
まあ、所詮趣味の問題ですが(私も初心者の頃は C っぽく書いていたような
気がする)、Lisp 式に慣れてしまえば逆に C 風な書き方は見にくい訳で、みん
なが Lisp の慣習に従っていればそれはそれで happy だと思います。
;; 関数型っぽい書き方をしていれば閉じ括弧の位置はあんまり意味がない
;; (複数の loop を使っていると loop の level が重要だけど)からこういう
;; 慣習が生まれたのかなという気もします。
例えば、C で、完全に C の慣習を無視した独自のインデントを行ってプログ
ラムを書けば、C のプログラマーにとってとても見にくいソースになると思いま
す。それと同様に Lisp の慣習に従った書き方をする意義はあると思います。
でも、実を言うと私がもっと気になるのは、変数に -p を付けるのとコメント
の付け方と header の形式と footer の欠如です。特に、header に関して言え
ば、例えば、GPL を知らない人は簡単な説明が無ければ困ってしまうだろうし、
どこから入手できるかも判らないかも知れません。
Kazu> P.S.
Kazu> 私が最初に読んだ Lisp の本には、「Lisp を知らない人には Lisp のプ
Kazu> ログラムはカッコのおばけにみえるかもしれない」という下りがありまし
Kazu> た。閉じカッコが多く続くプログラムは、現在でも私にはおばけに見えま
Kazu> す。
continuation passing なプログラムはちょっと苦手です(^_^;(頭が
continuation passing 対応している人は尊敬しちゃう)。
Kazu> --かず@論文逃避中
ditto.
--
tomo.
Mew-dist メーリングリストの案内