作者: Naomasa Numajiri
日時: 2002/5/22(13:52)
こんにちは、ぬです。
生の意見ありがとうございました。

| まつもと ゆきひろです
| 
<中略>
| 
| Python的な(Occamもか)インデントによるブロック表現には難点が
| 二つあります。
| 
| ひとつはタブ幅によって意味が変わってくることです。タブと空白
| とが区別つかないってのは歴史的間違いですよねえ。もちろん、

タブ <=> 空白 * 8
のことですね。(tabstop=4でいつも書いていますが、空白は使った
ことがないので困ったことはないです。)

| tabnanny.pyのような対応はあるわけですが。
| 
| もうひとつは文と式の明確な区別を導入してしまう点です。たとえ
| ば、Pythonでlambdaの本体が式しか書けなくて悲しいとか、Rubyで
| いう
| 
|    a = if cond than b else c end
| 
| のような書き方はできなくて
| 
|    if cond:
|      a = b
|    else:
|      a = c
| 
| のように「強制(矯正)」されちゃうのは嬉しくないです。

僕は逆に「誰が書いても同じコーディングスタイルになるように」なって
いるところが好きです。(この辺が好みの別れ所(の一つ)なんでしょうね。)

| 
| あと、以前はオートインデントができないって思ってたんですが、
| 最近のpython-modeではできるそうですね。侮れない。
| 
| これらをどの程度評価するかという問題ですが、私には受け入れら
| れませんでした。
| 
<中略>
| 
| これはあんまり嬉しくないです。「ぶらぶらelse」問題も発生しま
| すし。これはPerlのように「ブレース必須」とすることで解決する
| んですが、なんとなく(Rubyでいう)caseとかrescueとかが美しくな
| いような。
| 
|   begin {
|     ...
|   }
|   rescue (TypeError, ArgumentError) {
|     ...
|   }
| 
|   case (obj) {
|      when (1,2,3) {
|        ...
|      }
|      else {
|        ...
|      }
|   }

僕、ここ勘違いしていました。
(「begin = "{"、end = "}"」だと思っていた。。)

| 
| ということで、消去法で残ったのがEiffelやModulaのようなスタイ

GoogleでModule-2のサンプルを見てみました。
(OracleのPL/SQLと同じだった。)

| ルになるわけです。ruby-mode.elを作ってみたらオートインデント
| ができたというのも大きな理由ですが。
| 
| というような判断理由です。
| 
|                                 まつもと ゆきひろ /:|)

ありがとうございました。
でわでわ、失礼いたします。

-- ぬ