こんにちは、ぬです。
生の意見ありがとうございました。
| まつもと ゆきひろです
|
<中略>
|
| 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を作ってみたらオートインデント
| ができたというのも大きな理由ですが。
|
| というような判断理由です。
|
| まつもと ゆきひろ /:|)
ありがとうございました。
でわでわ、失礼いたします。
-- ぬ