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