世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2006年11月08日

Rubyの変数スコープがキモい件

記事を書くにあたってRubyの変数スコープを考えれば考える程気持ち悪く思えてくる。

ダイナミックスコープは慣れれば後置修飾子以外はあまり困らないんだけど、やっぱりブロック変数が気持ち悪すぎる。それから、制御構文はスコープを導入しないのにブロックは導入して、class/defに至っては外側のスコープを継承しないっていうのが気持ち悪い。

まぁ、これは関数ベースの発想に毒され過ぎなんだけど。Rubyは第一にはオブジェクト指向であって、非オブジェクト的構造化言語の性質は(Kernelモジュールとかで)シミュレートされているだけだし、関数型言語の性質はほんのり残ってるだけ。関数型っていう意味であればPythonのほうがまだ近いよね。

Rubyはクラスベースのオブジェクト指向言語なんだから、classやdefが特権的であって、そこでまったく新しいスコープが入るのはまぁ、わからんでもない。でもなー、クラス定義中のローカル変数をメソッドが参照できるとやっぱりうれしいんだけどなー。いや、define_methodとかClass.newはなしの方向で。

どうにも気持ち悪いから同じコードをとりあえずGaucheとHaskellで書いてみたらすっきりした。しばらくGaucheの人になります。

ところで、pythonistaとかrubyistのgauche(scheme)版の単語はなんて言うんだろ?

トラックバック

http://yugui.jp/articles/535/ping

現在のところトラックバックはありません

コメント

Red cat (2006年11月08日 23時33分58秒)
<p>Ruby のことは良く分かりませんが、私ゃ yugui 姉さんの口(手 ?)から<br />&gt; キモい<br />という単語が出てくるところは初めて見ましたよ(^^;)</p>
ささだ (2006年11月09日 00時55分11秒)
<p>ダイナミックスコープって?</p>
rui (2006年11月09日 01時37分06秒)
<p>Schemerとはいいますが、Gaucheに限ると特に呼び方がないと思います。</p>
Yugui (2006年11月09日 09時40分22秒)
<p>= Red catさん</p> <p>わたしも、その言葉はあまり好きじゃありませんが、それでもそう言わざるをえないほどの違和感なのでした。</p> <p>= ささださん</p> <p>識別子の出現時以降で認識される非レキシカルスコープ、のつもりでした。おかしいな、どこかで使ってるのを見て、この名称で認識してたんでけれど、いま裏をあたったら、exactにこの意味で使ってる用例は見当たらない。不正確で申し訳ないです。</p> <p>= ruiさん</p> <p>schemerですか。ありがとうございます。</p>
blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system