nil はいいとしても、 let a: Int? = 42 は禁止して let a: Int? = .some(42) を強制した方が色々問題起きなさそう。let a: Int? = 42? とか。言語機能でサブタイピング提供してサブタイピング周りガチツヨな言語になって、その上でMaybeとunion Optionalとが合体した最強の型 そうなってくれるなら許しがあるし最高 なるほど・・・。 (edited)union enum Foo<T> { case a(Int) case b(T) }Int|T として振る舞えるとしてFoo<Foo<String>> が Int|(Int|String) になっちゃうとInt|String と等価になってネストが消えちゃう・・・。union enum の正しい仕様だとすると、 Optional を unison にしたら、ネストできなくなってしまう。