18:55:24 @opaupafz2@twitter.com
icon

18:58:55 @opaupafz2@twitter.com
icon

ホリエモン、どうしたんだ。すっごいくるっくるやないか。何がとは言わないけど。

19:04:34 @opaupafz2@twitter.com
icon

これがWeb3の件、今さら知ったのだけど、これが公開終了とか回収されるんなら名前を言ってはいけないあの人の目覚めた本も回収されてほしかった。あれは関数型プログラマに多くの誤解を与えた。

19:06:44 @opaupafz2@twitter.com
icon

これがWeb3の件・・・?帰ってきたばかりで疲れてるんだろう。ゆるして

19:30:45 @opaupafz2@twitter.com
icon

名前を言ってはいけないあの人の目覚めた本は、もちろん熟練の関数型プログラマからもツッコミが入り、ラノベ勢からもツッコミが入り、哲学者からもツッコミが入った伝説の作品でございます。

22:28:26 @opaupafz2@twitter.com
icon

22:29:57 @opaupafz2@twitter.com
icon

>RT 知らなかった。loop式で囲ったときのbreak;でもそうなるな。ということは、break文やreturn文のある式は!型としての役割を果たしているということになるのかな(もしそうなのであれば! <: usizeなので理論上は型エラーにならない)。

22:33:55 @opaupafz2@twitter.com
icon

俺の⊥型の認識が間違っている可能性があるので、間違っていたらスマソ。

22:42:43 @opaupafz2@twitter.com
icon

でもRustは式指向の言語だからこれ以外に思いつかないんだよな、型エラーにならない理由が。

22:53:25 @opaupafz2@twitter.com
icon

戻り値が!型であるf()をi32型の値とかに代入できるから!型はすべての型の部分型であることは間違いないな。つまり、break文やreturn文のある式は(breakが式の結果となっている場合を除き)依然としてusize型であるということだ。

23:16:37 @opaupafz2@twitter.com
icon

i32型の値❌ i32型の変数⭕️

23:20:32 @opaupafz2@twitter.com
icon

23:35:37 @opaupafz2@twitter.com
icon

まぁ結論としては「型を揃えなくていい」んじゃなくて、{ break; }や{ return; }は別の腕の結果と同じ型だよってことですよ。

23:37:14 @opaupafz2@twitter.com
icon

訂正すると、別の腕は普通の整数リテラルだからmatch式の結果の型はi32型ですね。すみません。