ごとけんです

In message "[ruby-list:14034] Re: What is Object in Ruby? (Re: Ruby and LISP)"
    on 99/04/24, YANAGAWA Kazuhisa <kjana / os.xaxon.ne.jp> writes:
>> ただ、副作用なしで書けるかどうかというのは書きやすさとは
>> 分けて考えるべき問題で、Ruby の場合は案外副作用と呼ばれ
>> るものを排除できるのでは無いかと直観しています。とくに 
>> I/O などの OS とのやりとりはオブジェクトとして扱うのは理
>> にかなっています。
>
>むしろ I/O 何かの方が副作用無しで議論するのは難しそうな.「read したら
>ポインタが進む」という副作用無しでプログラムを書くのは面倒.「引数に読
>みだし開始点,返り値に更新された読みだし開始点を加えてやる」事によりこ
>の部分だけは関数的にできますが.

あ、ここでは副作用と言う言葉をオブジェクトの状態の変化以
外の副作用という意味で使ってました。つまり、副作用はすべ
て状態の変化に帰着させるような書き方はできるだろうという
ことです。勝手な言葉の使い方をしてすみません。

>圏論の monads モデルを適用して関数的であり,かつ状態を持ったデータを表
>現できる,という事らしいですが,「圏論の monads モデル」がわからないの
>で何ともいえない.

まぁ圏論で記述するのが適切だろうというのはもっともらしい
というか今風なんですけど、それだけでなく、より具体的に 
coalgebraic な側面に着目したほうが良いような気はしてます。

>ruby インタプリタを引数にすると eval は書けるかな (^^;
>
># そこまでやれば何でも書けるわ (^^; わけわからなくなるけど.

Ruby インタプリタを引数にすると、今度は文字列がプログラ
ムとして持つこと(反射性)を積極的にモデルにいれないといけ
なくなるのでイヤだなぁ。getopts みたいなものを書く場合は
eval は便利ですが、Ruby の場合はなくても便利さがそんなに
変わらないのかも知れません。getopts に関して言えばハッシュ
を返しても良いわけだし。

-- gotoken