A proposal for type unions (aka discriminated unions) in C#.
νμ
μ΄ κ°μ‘°λλ ν¨μν μΈμ΄λ λμ(Algebraic)μ μ리λ₯Ό λμ
ν΄ νμ
μ μ μνλλ°μ. λμμμ ADT(Algebraic Data Type)μ ν©νμ
κ³Ό κ³±νμ
μΌλ‘ λΆν΄λ©λλ€.
C# 7μ ννμ΄ 1κΈμΌλ‘ μ·¨κΈλκ³ C# 8 λΆν° μ€μμΉμμ΄ λμ
λκ³ κ°μ λλ©΄μ κ³±νμ
μ λ€λ£¨λ λ° μΈμ΄μ μΌλ‘ μ±μν΄ μ‘μ§μ. λ€λ§ ν©νμ
μ μΆκ°νμ§ λͺ»νλ λ°λμ ADTλ₯Ό 1κΈμΌλ‘ λ€λ£° μ μλ λ¬Έμ κ° μμ΅λλ€.
DU(Discriminated Unions)μ ν¨μν μΈμ΄(Scala, haskell, f#)μ μ΅κ·Ό κ°λ° μΈμ΄(Rust, Kotlin)μμ 1κΈμΌλ‘ μ 곡νλ ν©νμ
μΌλ‘ μμκ³Ό λΉμ·ν΄ 보μ΄μ§λ§ κ°μ₯ ν° μ°¨μ΄μ μ μμμ λν΄ λ«ν μλ€λ μ μ΄μ§μ. FSM(μ νμνκΈ°κ³)λ₯Ό μΈμ΄μμ 1κΈμΌλ‘ λ€λ£° μ μλ€λ μ₯μ λ μμ΅λλ€.
C#μ΄ λμ± μ λ³μ λν μ μλ κΈ°νλΌ μκ°λλ€μ. (λ¬Όλ‘ νκ΅ μ μΈ)
6κ°μ μ’μμ