Copper 언어 창시자가 Option Type을 포기한 이유
Union Types and Option Types

저자는 직접 만든 '더 나은 C' 언어 Copper에 Union Type과 Option Type을 실험했다. Union Type은 컴파일러 복잡도를 크게 높였고, Option Type은 nil 체커와 타입 정제 같은 여러 개념을 추가해 언어를 복잡하게 만들었다. TypeScript나 Kotlin처럼 암시적 nil 추론도 시도했지만 제네릭과 루프에서 예측 불가능한 동작을 보여 결국 이전 방식으로 돌아갔다. 미니멀리즘과 실용성 사이의 고민이 담겨 있다.
마지막으로, 이건 일종의 블랙 매직이다. 프로그램의 유효성이 nil 체커의 성능에 달려 있기 때문이다.
- ks2048
언어 기능을 언어 간에 비교 설명해 놓은 자료 중 가장 좋은 출처는 뭘까요? 예를 들어 "optional types"라면 어떤 언어들이 갖고 있고 어떻게 동작하는지 같은 거요. "union types" 등도 마찬가지고요.
- p1necone
tagged union을 구현할 때 사소하지만 (적어도 제겐) 그리 직관적이지 않은 요령이 하나 있습니다. 바로 union discriminator/tag를 맨 앞이 아니라 맨 뒤에 두는 겁니다. 그러면 union을 가리키는 포인터가 곧 값(value)을 가리키는 포인터가 되니까, 판별(discriminating) 후에 tag를 지나쳐 가리키도록 포인터를 증가시킬 필요가 없습니다.
- gnabgib
(2025) 그리고 CopperLang에 관해서는 (203 points, 3 days ago, 120 comments) https://news.ycombinator.com/item?id=50308754