深夜のオブジェクト指向と関数型がうんたらかんたら
- its_out_of_tune
- 3234
- 0
- 2
- 0
@its_out_of_tune @aoeui666 差は無いというか、無くなって行く感じにはなるのかなぁとか思ったりする。
2015-03-25 01:15:47@its_out_of_tune @nobkz lambda が lexical な変数の値を束縛することで状態を持てるってことですね. lambda あれば cons セルが実装できるでしょう?
2015-03-25 01:15:51@aoeui666 @nobkz んー、無限エクステントよく分からなかったです、ラムダで構成したconsセルを持って「状態」とは呼ばない気がするので・・・ あと、ふみしゃんのobjectiveは実質IO無いし状態系モナド上で状態管理するしか無い感じなのでごにょごにょ・・・
2015-03-25 01:21:22@its_out_of_tune @nobkz すみませんconsセルが状態を持ってないなら何なら持ってるんです? CLOSは原理上は全てリストでできると思うのですが.
2015-03-25 01:23:47@aoeui666 @nobkz つまりCOLSは無限長のストリームで状態を管理している・・・という事なのですかね・・・?ちょっと良くわからないですが、あくまで状態を表現する手法の一つという事ですよね?consセルはconsセルであってそれ以上でもそれ以下でも無いと思うのですが。
2015-03-25 01:27:42@its_out_of_tune @nobkz 状態の定義が並行線な気がするので状態の定義か例をくださいと言ったつもりなのですが...
2015-03-25 01:29:35@aoeui666 @nobkz ええと、ラムダ計算をベースとした処理系で状態を表現する方法はさまざまだとは思うのですが、少なくともラムダ計算そのものの要件に「状態」は無いですよね。対してオブジェクトは初めから状態を持つ事を要求しています。
2015-03-25 01:34:17@its_out_of_tune @nobkz consセルやベクタやらが状態を保持できるのでいわんやそれを実装できるラムダ計算は状態を保持できる, と僕は思っています. ラムダあれば状態を持ちメソッドディスパッチができるオブジェクト志向と呼べる言語を作れるんですから.
2015-03-25 01:36:35@aoeui666 @nobkz それはそうなんですが、そう言ってしまうと「チューリング完全なんだからアセンブリでも純LispでもBrainF*ckでもいいじゃん」と同じ結論になってしまうので・・・。
2015-03-25 01:39:34@aoeui666 @nobkz かなーり古いまとめなのですが、プログラムの話に収まらない議論なので・・・ごにょごにょ/プログラミングと現実世界と哲学の話 - Togetterまとめ togetter.com/li/385182
2015-03-25 01:46:14「状態とはなんぞや」という議論がめっちゃ難しいのは、なんかこのツイーヨが象徴している気がする twitter.com/fumieval/statu…
2015-03-25 01:48:13@its_out_of_tune @nobkz Stateモナドは状態ではないと言われた気がしましたが… 読みましたがちゅーんさんの主張がよくわかりません.
2015-03-25 02:00:06@aoeui666 @nobkz そもそも、OOPと関数型の違いを述べたかったわけですよね? 例としてStateモナドを使って状態を再現する事は可能ですが、それは実現可能であるというだけで、関数型というパラダイムそのものが状態を要件としているわけではありません(続
2015-03-25 02:07:20@aoeui666 @nobkz 対して、OOPであれば、オブジェクトそれ自体が「状態を持つ」事を要求していますが、それを踏まえて僕は「状態を持つか持たないか」を両者の違いを上げたわけです(続
2015-03-25 02:07:32@aoeui666 @nobkz もちろん、議論は厳密であればそれだけ良いのですが、「状態とは何か」を定義するのは【かなり】困難なので、「状態とは?」という質問に対しては、件のまとめを提示しました。
2015-03-25 02:07:41@its_out_of_tune @nobkz うーん, Stateモナドって実際に使われているという点ではチューリングマシン云々と並行して語るべきではないと思いますけど. あと自分はこの議論はFPとOOの話なので外部の状態とかは気にせずプログラムの内部の状態に限って話してます.
2015-03-25 02:09:49@its_out_of_tune @nobkz で, 内部の状態って単純にはコンスセルやベクタで表現できますし, Haskellにもこれらはあるし, Stateモナドもあるので, FPとOOの違いが状態の有無というのがあんまりピンとこない, と.
2015-03-25 02:13:32@aoeui666 @nobkz ええ、ですから有/無ではなく、要件/要求という言葉を使ったのです。 あと、チューリングマシン云々の話は、有/無で語るならOOもFPも違いは無いと考えられるので、「いっしょくたに出来る」という意味のメタファーで出したまでです。
2015-03-25 02:16:37@its_out_of_tune @nobkz そういう意味なら, うーん. Haskellなり(でプログラミングすること)が状態を要求してないってのは同意しかねますけど.
2015-03-25 02:21:38@aoeui666 @nobkz 現実的な世界でのプログラミングが状態やら副作用やらを要求しているのは同意します。 ただ、パラダイムそのもの、ラムダ計算そのものが状態という概念を内包しているわけでは無いという程度の話です。
2015-03-25 02:28:13