Hacker News new | ask | show | jobs
by brentsch 1962 days ago
A key line seems to be buried in the "Summary" at the end of the post: "Python native enums are great for what they were designed to do, but..." Barring tricks I'm unaware of, enums in other popular languages, such as Go and TypeScript, don't support the author's more complex usage either—probably by design.

Out of curiosity, are there languages for which the enum implementation supports and encourages encoding complex data like this?

4 comments

I think rust encourages encoding data like that.

https://doc.rust-lang.org/rust-by-example/custom_types/enum....

Sum types are the main reason I love writing Rust code. We all miss sum type Enums wherever we go. [0]

[0] https://www.reddit.com/r/rust/comments/l594zl/everywhere_i_g...

Often called sum types, it's really convenient when your language supports both building these kinds of enums as well as destructuring them with pattern matching.

If you don't have destructuring, they're less attractive. There's a proposal to add destructuring to python[1] so we'll see

[1] https://www.python.org/dev/peps/pep-0634/

Maybe Java? https://docs.oracle.com/javase/tutorial/java/javaOO/enum.htm...

Look how they encode planetary data into the enum of the Solar system planets.

Yes, you can search for "tagged union"