A Early History of Algebraic Data Types
Posted3 months agoActive3 months ago
hillelwayne.comTechstory
calmpositive
Debate
10/100
Programming LanguagesType TheorySoftware Development
Key topics
Programming Languages
Type Theory
Software Development
The article explores the early history of Algebraic Data Types (ADTs), and the discussion revolves around the topic with a single commenter sharing their thoughts.
Snapshot generated from the HN discussion
Discussion Activity
Light discussionFirst comment
4h
Peak period
1
3-4h
Avg / period
1
Key moments
- 01Story posted
Sep 25, 2025 at 11:35 AM EDT
3 months ago
Step 01 - 02First comment
Sep 25, 2025 at 3:18 PM EDT
4h after posting
Step 02 - 03Peak activity
1 comments in 3-4h
Hottest window of the conversation
Step 03 - 04Latest activity
Sep 25, 2025 at 3:18 PM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45374058Type: storyLast synced: 11/17/2025, 1:14:02 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
> Pascal did not have sum types because Wirth thought they were less flexible than untagged unions
I'm not sure whether my dream language would have tagged or untagged unions (Scala 3 has both it seems). I'd be interested if anyone has any further points of comparison beyond:
Tagged unions, eg. in Rust: enum Tagged {A(i64), B(String), C(f64)} Untagged unions, eg. in typed Python: Tagged = int | str | float
Tagged unions are better as you can represent duplicated types and types with no data, eg: enum Tagged {A, B(f64), C(f64)}
Untagged unions are better as you can willy nilly create new subsets and intersections of types. I find often in AST-ish work I want to express eg: def f(x: A | B | C) -> A | B