新しいものを表示

わりと意味がわからないけど、
hoge.fuga().piyo();
以上の何物でもないんでは?><

orange さんがブースト

mstdn.nere9.help/@orange_in_sp

これ、

impl Hoge {
fn hoge1(self) -> Self;
fn hoge2(&self) -> &Self;
fn hoge3(&mut self) -> &mut Self;
fn hoge4(&mut self) -> Self;
// などなど
}

のどれのつもりで言ってるのかわからないんですが (これらが区別できない言語はまず弱い)

少なくともたぶんLinqはそんな奇妙な事にはなってないよね?><

そのえっとなんかその辺の全部の反論に対してまとめて聞き返したいけど、そこまでして
hoge.fuga();
hoge.piyo();
と言う2つの手続きを
hoge.fuga().piyo();
なんて書き方に出来るようにする必要があるのと言うかそれらの対策をしてもそう書けるの?><

や、だから、金具さんの案ではhoge.fuga()でhogeを返すんだから型はhogeの型でしょ?><;

orange さんがブースト

それこそ型を見ればいいじゃん (型を見てわからない言語使いたくない) という感想しかないですね……

その文脈上で、hoge.fuga()でfugaがhogeの型と同一の型で何かを返すのであれば、それはhogeは破壊されていないとオレンジは考えるかも>< hogeにfugaと言う状態の変化を与えた物ではなくfugaと言う式を通した結果かもって><
逆にfugaがprocedureであれば、hogeをfugaと言う手続きで何らかの変化をさせる以外の推定のしようが無いかも><

意地悪な例示でTryってくっつけたけど、Tryってつけてなかったらどうなる?><ってなるかも><
手続きのような言葉で関数のように何かが返ってくる時にその何かは推測が難しいかも><
何が返ってくるかをその関数が表していなければ、何が返ってくるのかわからないって当たり前(自己言及的で循環する)な問題があるかも><
hoge.fuga()のfugaと言う4文字ににhogeそのものが返ってくるって情報はどこにあるんだろう?><
fugaというものが返ってくるのでは?って考えるかも><

enumと言うか列挙型、Pascal一族でも使われまくりかも>< 部分集合型があるからさらに大活躍かも><

orange さんがブースト

enum 、もっと言えば代数的データ型はもっと積極的に使われてほしいんですよね

orange さんがブースト

try の結果を表明するなら Result 型を使えばいいので特に設計のうえで悩む点はないですね

うん><; オレンジもAda大好き(ほとんど使った事無いけど)ってくらいだしそう考えるし、その前の話的にはboolならって書いたじゃん?><;( mstdn.nere9.help/@orange_in_sp )
その上で、金具さんの案はどうなのって・・・><

orange さんがブースト

「成功したか失敗したか」は bool ではなく「成功したか失敗したか」型で返ってほしい

orange さんがブースト

Tryなんだから処理結果ではなく処理が成功したか失敗したかのboolを返すべきで設計が悪い

その上で、金具さんの案だと、オレンジの例示で言うintが帰ってくるわけだよね?>< hoge.fuga()なprocedureだった物でhogeを返して欲しいって事なんだから><

orange さんがブースト

mstdn.nere9.help/@orange_in_sp
これは型で表明されれば何の混乱も起きない話で、たとえば
fn TryIncrement(&mut self) -> Result<&mut Self, IncrementError>
なのか
fn TryIncrement(&self) -> Result<Self, IncrementError>
なのか、型を見れば mutability なんて自明なので

で、intにint int.TryIncrement()みたいなのがあったらとんでもなく混乱するかも><
int x=3;
int y=x.TryIncrement();
ってしたあとにxはどうなってるのかわけわからんってなるかも><(xが文字通りインクリメントされて破壊されて4になった?>< それともyに4が入るだけでxは3?>< ていうかそもそもTryIncrement()が返すのは結果なのか、それとも何らかの勝手な定義による成否の表現?><(例えば0なら成功とか))

スレッドを表示

あいまいな表現になるけど><;
オレンジ的には、その関数が示しているものをなるべく返して欲しいみたいな感覚があるかも><
例えば変な例示かもしれないけどTryIncrement()って関数があってboolが返ってくるのであれば、(不可能な場合がある状態で)インクリメントしてみて出来たかどうかを返すのかも?><(論理の正負はわからん)って解釈するかも><

orange さんがブースト

戻り値のある function が参照透過性を破壊しないというお約束は、あまり当然ではない気がする

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

典型的には C++ における const 性なんかはそういう「オブジェクトについて、観測可能な変更が行われるか」みたいな制限された視野を提供している

スレッドを表示
古いものを表示
:realtek:

思考の /dev/null