人 なぜ
面倒だからと言う理由で例外を握り潰される可能性を減らすためにまともなResult型が必要で、それはそれとして(やろうと思えばrecoverできる)panicも必要だよねというとこまでは以前考えた
さすがに例外の観念が未発達な頃に設計されたJavaの例外機構を念頭に置いて議論するのは筋悪で、現代ならRustとHaskellあたりを軸に話すべきなのでは
algebraic effectってcoroutineのyield / resumeみたいなやつの一般化?
や、言い方が悪かったかもしれないけど私はクラッシュするべきでないとは最初から主張してないんです、過去こんな記事も書いたように……
Panic を恐れるべからず - 何とは言わない天然水飲みたさ
https://blog.cardina1.red/2019/12/19/dont-fear-the-panic/
throwで結果を返すのは、JSをそういうプリミティブ命令を持つ仮想マシンだと思うと気持ちは分かるけど、普通の人が持ってるメンタルモデルと著しく異なるのでヤバいという感想
「非検査例外で死ぬ→信用を裏切られている」を成立させるのは比較的ラクだけど、逆に信用を裏切られたときに確実に検出して死ぬのが難しいねんな
コードが無限に横に伸びてても、たとえばそれが定数リテラルの0.9999......だったら問題なく1.0にしてコンパイルを続けられるな
C++ も諦めて noexcept(true) とか noexcept(false) になりましたね、あれは言語デザインの問題
この中に定数式を突っ込めるから例外投げうるかどうかの判断を抽象化できて嬉しい(嬉しいとは言っていない)のか