To panic or not to panic
Goのpanicの話 を見てて思ったんですが、Option型を返すかpanicするかの判断って難しいですよねyhara.icon sqrt(-1)がpanicせずOption型を返す言語ってあるのかな?yhara.icon
Rustのf32::sqrtはNaNを返す
Haskellのheadやtailが部分関数である(Option型を返さず、異常値に対してpanicする)のは有名
(HaskellはOptionではなくMaybeという名前ですけど本項では「Option型」と「panicする」に統一させてくださいyhara.icon)
Haskellのheadと違い、Rustの.first()はOption型を返す
Rustもスライスの範囲外アクセスはpanicする
code:rust
かといってv[i]がOption型を返すのは煩雑すぎる、という判断なのだろう
自信がない場合はget(&self, index: usize)を使ってくれ、ということですかね。monochrome.icon
ああそうか、getがありますね。たしかに。yhara.icon
panicするかどうかの判断
panicは通常の手段では捕捉できない(GoやRustのpanicを想定)
雑談
「0以上の整数」を表す型があればコンパイル時にsqrt(-1)を弾けるよ