From: gotoken@... (GOTO Kentaro) Date: 1999-04-25T18:36:18+09:00 Subject: [ruby-list:14039] Re: What is Object in Ruby? (Re: Ruby and LISP) ごとけんです In message "[ruby-list:14034] Re: What is Object in Ruby? (Re: Ruby and LISP)" on 99/04/24, YANAGAWA Kazuhisa writes: >> ただ、副作用なしで書けるかどうかというのは書きやすさとは >> 分けて考えるべき問題で、Ruby の場合は案外副作用と呼ばれ >> るものを排除できるのでは無いかと直観しています。とくに >> I/O などの OS とのやりとりはオブジェクトとして扱うのは理 >> にかなっています。 > >むしろ I/O 何かの方が副作用無しで議論するのは難しそうな.「read したら >ポインタが進む」という副作用無しでプログラムを書くのは面倒.「引数に読 >みだし開始点,返り値に更新された読みだし開始点を加えてやる」事によりこ >の部分だけは関数的にできますが. あ、ここでは副作用と言う言葉をオブジェクトの状態の変化以 外の副作用という意味で使ってました。つまり、副作用はすべ て状態の変化に帰着させるような書き方はできるだろうという ことです。勝手な言葉の使い方をしてすみません。 >圏論の monads モデルを適用して関数的であり,かつ状態を持ったデータを表 >現できる,という事らしいですが,「圏論の monads モデル」がわからないの >で何ともいえない. まぁ圏論で記述するのが適切だろうというのはもっともらしい というか今風なんですけど、それだけでなく、より具体的に coalgebraic な側面に着目したほうが良いような気はしてます。 >ruby インタプリタを引数にすると eval は書けるかな (^^; > ># そこまでやれば何でも書けるわ (^^; わけわからなくなるけど. Ruby インタプリタを引数にすると、今度は文字列がプログラ ムとして持つこと(反射性)を積極的にモデルにいれないといけ なくなるのでイヤだなぁ。getopts みたいなものを書く場合は eval は便利ですが、Ruby の場合はなくても便利さがそんなに 変わらないのかも知れません。getopts に関して言えばハッシュ を返しても良いわけだし。 -- gotoken