少なくともたぶんLinqはそんな奇妙な事にはなってないよね?><
Notices by orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help), page 15
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:57:35 JST orange -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:54:31 JST orange そのえっとなんかその辺の全部の反論に対してまとめて聞き返したいけど、そこまでして
hoge.fuga();
hoge.piyo();
と言う2つの手続きを
hoge.fuga().piyo();
なんて書き方に出来るようにする必要があるのと言うかそれらの対策をしてもそう書けるの?>< -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:48:47 JST orange や、だから、金具さんの案ではhoge.fuga()でhogeを返すんだから型はhogeの型でしょ?><;
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:47:52 JST orange その文脈上で、hoge.fuga()でfugaがhogeの型と同一の型で何かを返すのであれば、それはhogeは破壊されていないとオレンジは考えるかも>< hogeにfugaと言う状態の変化を与えた物ではなくfugaと言う式を通した結果かもって><
逆にfugaがprocedureであれば、hogeをfugaと言う手続きで何らかの変化をさせる以外の推定のしようが無いかも>< -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:44:47 JST orange 意地悪な例示でTryってくっつけたけど、Tryってつけてなかったらどうなる?><ってなるかも><
手続きのような言葉で関数のように何かが返ってくる時にその何かは推測が難しいかも><
何が返ってくるかをその関数が表していなければ、何が返ってくるのかわからないって当たり前(自己言及的で循環する)な問題があるかも><
hoge.fuga()のfugaと言う4文字ににhogeそのものが返ってくるって情報はどこにあるんだろう?><
fugaというものが返ってくるのでは?って考えるかも>< -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:33:57 JST orange その上で、金具さんの案だと、オレンジの例示で言うintが帰ってくるわけだよね?>< hoge.fuga()なprocedureだった物でhogeを返して欲しいって事なんだから><
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:29:59 JST orange で、intにint int.TryIncrement()みたいなのがあったらとんでもなく混乱するかも><
int x=3;
int y=x.TryIncrement();
ってしたあとにxはどうなってるのかわけわからんってなるかも><(xが文字通りインクリメントされて破壊されて4になった?>< それともyに4が入るだけでxは3?>< ていうかそもそもTryIncrement()が返すのは結果なのか、それとも何らかの勝手な定義による成否の表現?><(例えば0なら成功とか)) -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:23:06 JST orange あいまいな表現になるけど><;
オレンジ的には、その関数が示しているものをなるべく返して欲しいみたいな感覚があるかも><
例えば変な例示かもしれないけどTryIncrement()って関数があってboolが返ってくるのであれば、(不可能な場合がある状態で)インクリメントしてみて出来たかどうかを返すのかも?><(論理の正負はわからん)って解釈するかも>< -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:11:36 JST orange なんでそうなるかと言うと、(計算機の)状態が「必ず変化しない」procedureなんて、中の処理が実際には空っぽとかじゃなければありえないだろうし><
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:09:49 JST orange 例えばfugaってprocedureとint piyo(int x);ってfunctionを持つhogeがあったとする><
int a=hoge.piyo(x);
hoge.fuga();
int b=hoge.piyo(x);
ってした時に、よりaとbという結果が異なる可能性が高くなるよね?><;
より参照透過性(?)が危険にさらされる(?)場面である可能性が高くなると看做せる(?)というか・・・><(状態を持つのであれば保障は出来ないのは当然として><) -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 15:00:27 JST orange 少なくともC# で、何らかの関数を実行した結果は、何らかの新たな物(結果なりリソースなり)か何らかの部分集合等であって、その名前の手続きを実行して変化した(=非破壊では無いという意味では破壊された)結果と解釈する事って少なくともオレンジは無いかも><;
関数型とかあんまり好きじゃないけど、「破壊されたその物が返ってくる」ってその逆方向に突っ走りまくりな発想では?><; -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 14:48:44 JST orange で、Linqでそんな変な場面ってあるの?><;
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 14:44:33 JST orange Pascal一族も別にfunctionで副作用を起こさないなんて意味は持ってないかも>< そうじゃなく、procedureって必ず・・・副作用?><; なんていうの?><;参照透過性の崩壊?><;
なんかそんな感じの関数型の言語が避けまくるような物を踏んづけてる場所だよって言う意味を結果的に持ってない?><;(そうじゃない場所では踏んで無いということではなく><;) -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 14:34:22 JST orange hoge.fuga();
hoge.piyo();
で、fuga();が本来void fuga();でPascalでprocedureとするものであるのであれば、それはhogeに「何らかの操作をする」であって、hogeを加工した複製(例えば集合であるhogeの部分集合を返す)みたいな意味は持たないよね?><
そういう意味を持つのであればそれはprocedureになるはずは無く必ずfunctionになるんだから>< -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 14:19:36 JST orange もしかして、
hoge.fuga();
hoge.piyo();
を
hoge.fuga().piyo();
みたいに書きたいってこと?><; -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 14:17:43 JST orange C# / Delphi人的にはそんな事して何がうれしいのかさっぱりわからない・・・><
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 14:01:31 JST orange Pascalだとどうなってたっけ?><と思ってぐぐったら、Delphi一族(Free Pascalとか)の場合はPointerってそのまんまの名前の標準の型になるらしいけど、Pascalそのものの仕様なのかDelphi一族の方言なのかわからない・・・><
-
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 02:33:34 JST orange 今のローリングリリースで最新版以外はまともに使えない状況ってつまり、まともにモジュール化されてないゴミみたいな設計のソフトウェアが世の中に大量にあふれたままとも言えるかも><
https://mstdn.nere9.help/@orange_in_space/101263232768409527 -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 02:31:48 JST orange ていうか「部品」とは、ある仕様(結果的な契約とも言えるかも><)に基づく振る舞いを行う事が出来るひとかたまりとも言えるかも><
それが破られる=仕様、振る舞いが違うものは別物だし、その仕様(契約とか規約とも言えるかも><)がころころ変わる境界は、部品としての分割面では無いとも言えるし、分割(モジュール化)されていないとも言えるし、機能毎に適切に分割されていないような設計はゴミかも><In conversation from mstdn.nere9.help permalink -
orange (orangeinspace@mstdn.nere9.help@mstdn.nere9.help)'s status on Wednesday, 19-Dec-2018 02:25:04 JST orange オレンジが最近何回か話題にした、将来の互換性を考えれみたいな話も、
https://mstdn.nere9.help/users/orange_in_space/statuses/101228330322959442
欠陥を改修しても仕様変更せずに済む正しい設計をって話につながるかも><(部品に欠陥があっても、最新の改修済みの部品に完全な互換性があるなら、その部品だけ変えれば済む><)In conversation from mstdn.nere9.help permalink Attachments