If you could make any changes to D, what would they look like?

SealabJaster sealabjaster at gmail.com
Wed Oct 20 09:47:54 UTC 2021

Just for giggles, without pesky things like breaking changes; 
rational thinking, logical reasoning behind the changes, etc.

What interesting changes would you make to the language, and what 
could they possibly look like?

Here's a small example of some things I'd like.

import std;

interface Animal
     void speak(string language);

struct Dog
     @nogc @nothrow @pure @safe
     static void speak(string l)
         // Pattern matching of some kind
         // With strings this is just a fancy switch statement, 
but this is the gist of it
         match l with
             "english" => writeln("woof"),
             "french" => writeln("le woof"),
             _ => writeln("foow")

struct Cat
     // Remove historical baggage. Make old attributes into `@` 
     @nogc @nothrow @pure @safe
     static void speak()

// ? for "explicitly nullable"
void doSpeak(alias T)(string? language)
if(is(T == struct) && match(T : Animal)) // Match structs against 
an interface.
     // immutable by default. ?? is the same as in C#
     auto lang = language ?? "UNKNOWN";

     // So of course we'd need a mutable keyword of some sort
     mutable output = $"{__traits(identifier, T)} speaking in 
{lang}"; // String interpolation

void main()
     doSpeak!Cat; // Should be a compiler error since it fails the 
`match` statement

More information about the Digitalmars-d mailing list