新しいものを表示
orange さんがブースト

変更された結果返ってくる値が元の値のその後であるのか複製であるのか、これは単に (GC 付きの言語であれば) 元の値の参照が生存しているか否かの違い、所有権のその後の話であって、本質的に異なるものだと言えるのだろうか?

少なくともC# で、何らかの関数を実行した結果は、何らかの新たな物(結果なりリソースなり)か何らかの部分集合等であって、その名前の手続きを実行して変化した(=非破壊では無いという意味では破壊された)結果と解釈する事って少なくともオレンジは無いかも><;
関数型とかあんまり好きじゃないけど、「破壊されたその物が返ってくる」ってその逆方向に突っ走りまくりな発想では?><;

で、Linqでそんな変な場面ってあるの?><;

スレッドを表示

Pascal一族も別にfunctionで副作用を起こさないなんて意味は持ってないかも>< そうじゃなく、procedureって必ず・・・副作用?><; なんていうの?><;参照透過性の崩壊?><;
なんかそんな感じの関数型の言語が避けまくるような物を踏んづけてる場所だよって言う意味を結果的に持ってない?><;(そうじゃない場所では踏んで無いということではなく><;)

オレンジの説明が微妙におかしいのかもしれないけど、hogeに何も起きないhogeのprocedureってなに?><;

orange さんがブースト

function と proceduce を使い分けるとき、 function が副作用を含まないという意味なのか何らかの値を返却するという意味なのかは人によって異なる

hoge.fuga();
hoge.piyo();
で、fuga();が本来void fuga();でPascalでprocedureとするものであるのであれば、それはhogeに「何らかの操作をする」であって、hogeを加工した複製(例えば集合であるhogeの部分集合を返す)みたいな意味は持たないよね?><
そういう意味を持つのであればそれはprocedureになるはずは無く必ずfunctionになるんだから><

ていうか、説明正しいかわかんないけど、procedureである事=副作用がある?><そのオブジェクト等の状態が変化する(させる)(可能性がある)と言うことになるんじゃないの・・・?>< そこで無加工の集合を返す(?><)みたいな表現になるのはまずくない?><

Linqほとんどわからんだけど、Linqに手続きに相当するキーワード(?)ってあるの・・・?><

もしかして、
hoge.fuga();
hoge.piyo();

hoge.fuga().piyo();
みたいに書きたいってこと?><;

orange さんがブースト

というのも、たとえば
foo.set_bar(bar()).set_baz(baz());
みたいな式を書いたとき、 bar() と baz() の評価順序って定められてない気がするんですが、どうでしたっけ

スレッドを表示
orange さんがブースト

C# / Delphi人的にはそんな事して何がうれしいのかさっぱりわからない・・・><

Pascalがわりと『そのまんま書く』って文化なのも影響してそう?><

orange さんがブースト

@[email protected] やっぱり不明な参照先を示すポインターを示す予約語があると便利なんやね……

アンダース・ヘルスバーグはDelphiでPascalの仕様どおりfunctionとprocedureをわけたの後悔してC# ではわけるのやめたってどっかで読んだかも><(都市伝説かもしれない><;)

orange さんがブースト

procedure hoge begin
....
end

function fuga begin
...
end

って書くわね<Pascal

orange さんがブースト

そもそも関数と手続きを同じ構文で書こうとしているのが頂けない

orange さんがブースト

「戻り値のない関数」って凄い矛盾したこと言ってるよね

古いものを表示
:realtek:

思考の /dev/null