深夜のオブジェクト指向と関数型がうんたらかんたら

いつも通り特に落とし所はなく、各々が各々の知見を得るための議論です。
3
はなだ☆のぶかず@lisp &ボドゲ勢ボドゲプレイヤー) @nobkz

@its_out_of_tune @aoeui666 差は無いというか、無くなって行く感じにはなるのかなぁとか思ったりする。

2015-03-25 01:15:47
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz lambda が lexical な変数の値を束縛することで状態を持てるってことですね. lambda あれば cons セルが実装できるでしょう?

2015-03-25 01:15:51
青江 憂 @がんばらねば @aoeui666

無限エクステントっていうかラムダ計算って言えばいいのか?

2015-03-25 01:17:52
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz いや無限エクステントの説明として正確ではないですけど.

2015-03-25 01:18:36
ちゅーん @its_out_of_tune

@aoeui666 @nobkz んー、無限エクステントよく分からなかったです、ラムダで構成したconsセルを持って「状態」とは呼ばない気がするので・・・ あと、ふみしゃんのobjectiveは実質IO無いし状態系モナド上で状態管理するしか無い感じなのでごにょごにょ・・・

2015-03-25 01:21:22
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz すみませんconsセルが状態を持ってないなら何なら持ってるんです? CLOSは原理上は全てリストでできると思うのですが.

2015-03-25 01:23:47
ちゅーん @its_out_of_tune

@aoeui666 @nobkz つまりCOLSは無限長のストリームで状態を管理している・・・という事なのですかね・・・?ちょっと良くわからないですが、あくまで状態を表現する手法の一つという事ですよね?consセルはconsセルであってそれ以上でもそれ以下でも無いと思うのですが。

2015-03-25 01:27:42
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz 状態の定義が並行線な気がするので状態の定義か例をくださいと言ったつもりなのですが...

2015-03-25 01:29:35
ちゅーん @its_out_of_tune

@aoeui666 @nobkz ええと、ラムダ計算をベースとした処理系で状態を表現する方法はさまざまだとは思うのですが、少なくともラムダ計算そのものの要件に「状態」は無いですよね。対してオブジェクトは初めから状態を持つ事を要求しています。

2015-03-25 01:34:17
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz consセルやベクタやらが状態を保持できるのでいわんやそれを実装できるラムダ計算は状態を保持できる, と僕は思っています. ラムダあれば状態を持ちメソッドディスパッチができるオブジェクト志向と呼べる言語を作れるんですから.

2015-03-25 01:36:35
青江 憂 @がんばらねば @aoeui666

ラムダでベクタは実装できるってのはうそだった.

2015-03-25 01:38:15
ちゅーん @its_out_of_tune

@aoeui666 @nobkz それはそうなんですが、そう言ってしまうと「チューリング完全なんだからアセンブリでも純LispでもBrainF*ckでもいいじゃん」と同じ結論になってしまうので・・・。

2015-03-25 01:39:34
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz なるほどそれは僕がよくなかったですね... して, 状態とは?

2015-03-25 01:43:15
ちゅーん @its_out_of_tune

@aoeui666 @nobkz かなーり古いまとめなのですが、プログラムの話に収まらない議論なので・・・ごにょごにょ/プログラミングと現実世界と哲学の話 - Togetterまとめ togetter.com/li/385182

2015-03-25 01:46:14
ちゅーん @its_out_of_tune

「状態とはなんぞや」という議論がめっちゃ難しいのは、なんかこのツイーヨが象徴している気がする twitter.com/fumieval/statu…

2015-03-25 01:48:13
ふみ a.k.a.DJ Monad @fumieval

そういえば、*ここ*に「外の世界」から値が入ってきた痕跡はないな…

2012-10-06 01:32:04
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz Stateモナドは状態ではないと言われた気がしましたが… 読みましたがちゅーんさんの主張がよくわかりません.

2015-03-25 02:00:06
ちゅーん @its_out_of_tune

@aoeui666 @nobkz そもそも、OOPと関数型の違いを述べたかったわけですよね? 例としてStateモナドを使って状態を再現する事は可能ですが、それは実現可能であるというだけで、関数型というパラダイムそのものが状態を要件としているわけではありません(続

2015-03-25 02:07:20
ちゅーん @its_out_of_tune

@aoeui666 @nobkz 対して、OOPであれば、オブジェクトそれ自体が「状態を持つ」事を要求していますが、それを踏まえて僕は「状態を持つか持たないか」を両者の違いを上げたわけです(続

2015-03-25 02:07:32
ちゅーん @its_out_of_tune

@aoeui666 @nobkz もちろん、議論は厳密であればそれだけ良いのですが、「状態とは何か」を定義するのは【かなり】困難なので、「状態とは?」という質問に対しては、件のまとめを提示しました。

2015-03-25 02:07:41
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz うーん, Stateモナドって実際に使われているという点ではチューリングマシン云々と並行して語るべきではないと思いますけど. あと自分はこの議論はFPとOOの話なので外部の状態とかは気にせずプログラムの内部の状態に限って話してます.

2015-03-25 02:09:49
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz で, 内部の状態って単純にはコンスセルやベクタで表現できますし, Haskellにもこれらはあるし, Stateモナドもあるので, FPとOOの違いが状態の有無というのがあんまりピンとこない, と.

2015-03-25 02:13:32
ちゅーん @its_out_of_tune

@aoeui666 @nobkz ええ、ですから有/無ではなく、要件/要求という言葉を使ったのです。 あと、チューリングマシン云々の話は、有/無で語るならOOもFPも違いは無いと考えられるので、「いっしょくたに出来る」という意味のメタファーで出したまでです。

2015-03-25 02:16:37
青江 憂 @がんばらねば @aoeui666

@its_out_of_tune @nobkz そういう意味なら, うーん. Haskellなり(でプログラミングすること)が状態を要求してないってのは同意しかねますけど.

2015-03-25 02:21:38
ちゅーん @its_out_of_tune

@aoeui666 @nobkz 現実的な世界でのプログラミングが状態やら副作用やらを要求しているのは同意します。 ただ、パラダイムそのもの、ラムダ計算そのものが状態という概念を内包しているわけでは無いという程度の話です。

2015-03-25 02:28:13