draft proposal for Sum Types for D
Paul Backus
snarwin at gmail.com
Mon Dec 5 18:41:39 UTC 2022
On Monday, 5 December 2022 at 17:31:11 UTC, Jacob Shtokolov wrote:
> On Monday, 5 December 2022 at 14:50:47 UTC, Paul Backus wrote:
>> IMO if you want this kind of extensibility, a sum type is the
>> wrong tool for the job. This is *exactly* the use case that
>> classes are designed for: extending existing code to operate
>> on new types, without modifying the code itself.
>>
>> Sum types, by contrast, excel when the set of types is fixed,
>> but you would like to be able to define new operations on that
>> set of types without changing existing code.
>
> That would be the case, but D has things like BetterC which
> doesn't support classes (okay, it supports C++ classes, but
> still).
If the problem is that BetterC has poor support for classes, then
the solution should be to improve BetterC's support for classes
(e.g., by making D classes less dependent on `TypeInfo`).
> There are other cases where one might need to extend such sum
> types, say, you want to extend error types, etc.
The Rust community has come up with a variety of techniques to
handle cases like this using library code. I am confident that D,
with its powerful metaprogramming and reflection, is capable of
handling them just as well, if not better.
More information about the Digitalmars-d
mailing list