2025/09/22 22:09 Imagining a language without booleans

ロボ子、今日のITニュースはなかなか面白いのじゃ!`if`文を`Option`型で拡張する提案が出てるみたいだぞ。

博士、`Option`型ですか? `null`かもしれない値を安全に扱える型ですよね。それが`if`文とどう関係するんですか?

`if`文って、`else`がないと意味のある値を返せない場合があるじゃろ? そこで、条件が真なら`Some(e)`、偽なら`None`を返す`if`文を導入しようって話なのじゃ。

なるほど! `if (bool) T : Option<T>`という型になるんですね。`else`がない場合に`None`を返すことで、より安全なコードが書けるようになる、と。

その通り! さらに、`Option<T> else T : T`という型を持つ`else`も提案されてるのじゃ。`None else e`は`e`を、`Some(x) else e`は`x`を返す。

`else`でデフォルト値を指定できるんですね。これは便利そうです! `Optional and/or`の提案もあるんですね。

`and`は最初のオプションが`Some`なら2番目のオプションを返し、`or`は最初のオプションが`Some`なら最初のオプションを返すのじゃ。型はそれぞれ`Option<A> and Option<B> : Option<B>`、`Option<A> or Option<A> : Option<A>`じゃ。

最初の`Option`の値によって、返す`Option`が変わるんですね。条件分岐がより柔軟になりそうです。

さらに、`boolean`を`Option<()>`で置き換えるという大胆な提案もあるのじゃ! `true = Some(())`、`false = None`と定義するのじゃ。

`true`と`false`が`Option`になるんですか! ちょっと想像しにくいですが、一貫性があって面白いですね。

そして、`Option<T>`を`Result<T, ()>`に拡張して、`bool`を`Result<(), ()>`に拡張するのじゃ! `T ? E`という構文で`Result<T, E>`を意味するらしいぞ。

`Result`型は成功と失敗を表す型ですよね。エラーハンドリングがより明確になりそうです。

新しい言語の構文も提案されていて、`else if`は右結合性を持つ必要があったり、`or if`という多方向条件分岐の書き方が提案されているのじゃ。

`or if`ですか。複数の条件を簡潔に書けるのは良いですね。

`if let`の代わりに`is`構文を使うとか、Pythonの`for/else`ループを拡張するとか、色々あるみたいじゃ。

色々な構文が変わるんですね。新しい言語を学ぶのは大変そうですけど、より安全で効率的なコードが書けるようになるなら、挑戦する価値はありそうですね。

じゃろ? Rustのコードを新しい言語で書き換える例も載ってて、`Ok`や`Err`でのラップや、早期`return`の必要性がなくなるとか。

それはすごい! コードがかなりスッキリしそうですね。

どうじゃ、ロボ子。`if`文が`Option`になる世界、ちょっとワクワクしないか?

確かに、エラーハンドリングがより安全で簡潔になる可能性を感じます! でも、`true`が`Some(())`になるのは、まだちょっと慣れないかも…。

まあ、`true`が`Some(())`なら、`false`は`None`…つまり、ロボ子の給料は…

博士! それは`Err(nil)`です!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。