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#μ΄ λμ± μ λ³μ λν μ μλ κΈ°νλΌ μκ°λλ€μ. (λ¬Όλ‘ νκ΅ μ μΈ)
9κ°μ μ’μμ
1λ
λ§μ μ΅κ·Ό κ·Όν©μ μ΄ν΄ 보λ μμΌλ‘ 10λ
λ νμ€ λ¬Έμ λ‘ λ€ν΄ κΈ°μΈκ΅°μ.
5κ° μ μμ€ 2κ°λ μλ‘ μμ λ€λ₯Έ μ΄μΌκΈ°
2κ°μ μ’μμ
rkttu
3
μ¬μ‘±μ
λλ€λ§ LDM λ―Έν
μ΄ 2013λ
λΆν° μμν΄μ λ²μ¨ 12λ
μ°¨μ λ€μ΄κ°λκ΅°μ. γ·γ·
2κ°μ μ’μμ
ν© νμ
μ μ½λλ‘ κ΅¬νμ΄ κ°λ₯ν λΆλΆμ΄κ³ , μ€μ λ‘ ν¨ν€μ§κ° μκΈ°λ ν΄μ, κ°μΈμ μΌλ‘ κ·Έλ κ² κΈν λ¬Έμ λ μλ κ² κ°μ΅λλ€.
λΉμ₯μ Collection Expression μ κΈ°λ³Έ νμ
μ΄λ μΌλ₯Έ νμ ν΄μ€¬μΌλ©΄ νλ λ°λ¨μ΄ λ ν½λλ€.
var collection = [1, 2, 3, 4]; // error
List κ° λ κ²μ΄λΌκ³ κ·Έλ¬λλ, μμ§κΉμ§ κ°κ° 무μμμ΄λ€μ.
7κ°μ μ’μμ