ratio - rational - irrational

« TS-jade 915Gの再構成 | Main | なるほどautotestは素晴らしい »

2006年11月08日

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

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

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

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

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

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

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



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/533

コメント

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

  • Posted by: Red cat at 2006年11月08日 23:33

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

  • Posted by: ささだ at 2006年11月09日 00:55

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

  • Posted by: rui at 2006年11月09日 01:37

= Red catさん

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


= ささださん

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


= ruiさん

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

  • Posted by: Yugui at 2006年11月09日 09:40

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2006 Yugui

Powered by Movable Type 3.2-ja-2