Rust での unwrap, expect, panic, assert 周辺の話
bottom が型なのはやっぱり大事だと思った、 std::process::exit() の型を見たときに。 [[noreturn]] void exit(int); じゃあないんだよな (?)
2020-12-22 18:18:41Rustでunwrapからのパニックを出すライブラリを見るとキレそうになるが、Haskellは実行時エラーを出す関数の数々が言語仕様レベルで決められているので人のことを言えなかった
2020-12-22 18:20:20Rust, 無限ループが定義されていて未定義動作じゃないから、そこらへんわりと考えるのが面倒くさい気がする ! が「未定義動作」ではないわけで……
2020-12-22 18:26:56あくまで never type (`!`) は発散であって空集合みたいな型でしかないので、その点では単純で使いやすい (が、処理系実装者からすると結構面倒みたいで、それは昔 blog.cardina1.red/2017/12/07/nev… で調べた)
2020-12-22 18:29:14オートマトンの想定しなかったアルファベットが入力に来たときにゴミ箱的状態に全て投げ捨てるアレを想像していました (伝われ)
2020-12-22 18:30:07bottom / never type / diverge は独立した状態でなく全ての型の部分型になっているから、その辺りが厄介なのかな (適当)
2020-12-22 18:33:09@denjiry dtolnay/no-panic: Attribute macro to require that the compiler prove a function can't ever panic github.com/dtolnay/no-pan… 検査までは試みられてますが、 clippy に導入されるレベルまで来るのは相当先になりそうですね……
2020-12-22 18:36:02To panic! or Not To panic! - The Rust Programming Language doc.rust-lang.org/book/ch09-03-t… なんか読んだ覚えのない公式文書が出てきたんですがマジっすか (TRPL 1st edition を読んで育ったマンなので 2nd edition に目を通してない)
2020-12-22 18:38:31後ろで「制約込みの型を作って幸せになろうな」とかも書いてあるし、総合的に私の考えと一致していたので、まあそうだよなとなった
2020-12-22 18:44:49Panic を恐れるべからず - 何とは言わない天然水飲みたさ blog.cardina1.red/2019/12/19/don… よく見たら既にリンク貼ってあって、こいつバカか??? と思いました (ハイ)
2020-12-22 18:48:01expect の引数にエラーの説明を渡すの未だに納得してゐない (パニクることを望んでゐる様に読めるので) twitter.com/lo48576/status…
2020-12-22 21:03:06github.com/blas-lapack-rs… ピピー! unwrap 警察です! .unwrap() の代わりに .expect("エラーにならない理由") を使いましょう!!!
2020-12-22 15:16:21