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 Likes