module hoekjed.overig; import std.algorithm : countUntil, remove; void verwijder(Soort)(ref Soort[] lijst, Soort onderdeel) { const long i = lijst.countUntil(onderdeel); assert(i >= 0, "Onderdeel niet in lijst."); lijst = lijst.remove(i); } alias Resultaat(A, string operatie, B) = typeof(mixin("A.init" ~ operatie ~ "B.init")); // a.isSoort!B bool isSoort(B, A)(A a) { return is(A == B); } // a.isSoort(b) bool isSoort(A, B)(A a, B b) { return is(A == B); } /** * Geeft aan of T een lijst is, waarbij alles met een index gezien wordt als een lijst. * Dit is anders dan traits.isArray, welk een toewijzingstabel als uint[uint] niet ziet als lijst. * (Blijkbaar is een associatieve lijst in het duits een Zuordnungstabelle, oftewel een toeördeningstabel). */ bool isLijst(T, uint n = 1)() if (n > 0) { import std.array : replicate; return is(typeof(mixin("T.init" ~ "[0]".replicate(n)))); }