3 ms·
Unions are simpler than subclasses and more powerful than enums, so the use cases are plentiful. This should reduce the proliferation of verbose class hierarchi
by munchler 5mo ago
Unions are simpler than subclasses and more powerful than enums, so the use cases are plentiful. This should reduce the proliferation of verbose class hierarchies in C#. Algebraic data types (i.e. records and unions) can usually express domain models much more succinctly than traditional OO.
- Quarrelsome 5mo ago> so the use cases are plentiful such as? > This should reduce the proliferation of verbose class hierarchies in C# So just as an alternative for class hierarchies? I mean good people already balance that by having a preference for composition.
- munchler 5mo agoSimple example: type Expr = | Primitive of int | Addition of (Expr * Expr) | Subtraction of (Expr * Expr) | Negation of Expr
- Quarrelsome 5mo agoIsn't that just Func<int> ?
- afdbcreid 5mo agoReally not. You can, of course, having instead a delegate to evaluate the expression. But then that's all you can do. You can't pretty-print it, for example, or optimize it, or whatever.
- deleted 5mo ago[deleted]
- LeFantome 5mo ago“Compoision”. A typo I know but it would be a word describing what goes wrong with class hierarchies.