8 ms·
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
by brentsch 6y 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?
- nine_k 6y agoMaybe Java? https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html https://docs.oracle.com/javase/tutorial/java/javaOO/enum.htm... Look how they encode planetary data into the enum of the Solar system planets.
- isaac21259 6y agoI think rust encourages encoding data like that. https://doc.rust-lang.org/rust-by-example/custom_types/enum.html https://doc.rust-lang.org/rust-by-example/custom_types/enum....
- rmdashrfstar 6y agoSum 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_go_i_miss_rusts_enums/?utm_source=share&utm_medium=ios_app&utm_name=iossmf https://www.reddit.com/r/rust/comments/l594zl/everywhere_i_g...
- remram 6y agoYes, you can search for "tagged union"
- habitue 6y agoOften 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/ https://www.python.org/dev/peps/pep-0634/