世界線航跡蔵

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秒)

Ruby のことは良く分かりませんが、私ゃ yugui 姉さんの口(手 ?)から
> キモい
という単語が出てくるところは初めて見ましたよ(^^;)

ささだ (2006年11月09日 00時55分11秒)

ダイナミックスコープって?

rui (2006年11月09日 01時37分06秒)

Schemerとはいいますが、Gaucheに限ると特に呼び方がないと思います。

Yugui (2006年11月09日 09時40分22秒)

= Red catさん

わたしも、その言葉はあまり好きじゃありませんが、それでもそう言わざるをえないほどの違和感なのでした。

= ささださん

識別子の出現時以降で認識される非レキシカルスコープ、のつもりでした。おかしいな、どこかで使ってるのを見て、この名称で認識してたんでけれど、いま裏をあたったら、exactにこの意味で使ってる用例は見当たらない。不正確で申し訳ないです。

= ruiさん

schemerですか。ありがとうございます。

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2011年12月
  2. 2011年07月
  3. 2011年03月
  4. 2011年01月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system