Type Unions for C# μ œμ•ˆμ„œ

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개의 μ’‹μ•„μš”