D-etractions A real world programmers view on D

Adam D. Ruppe destructionator at gmail.com
Tue Sep 4 12:39:34 PDT 2012


On Tuesday, 4 September 2012 at 19:18:05 UTC, Jacob Carlborg 
wrote:
> I've also wished quite many times I had dynamic typing in D.

I think we're *fairly* close with things like std.variant,
especially combined with some helpers. Take a look:

Variant a = 10;
string b = a; // can't, and I say that's good, usually
b = a.coerce!string; // works

But, to get a dynamic feel, you don't want to write
out coerce!type. I kinda want it to be auto. So,

Variant a = 10;
string b;

b.dset = a; // dset means dynamic set

This is pretty doable in D today.

auto dset(T, U)(ref T t, U u) {
         return t = to!T(u);
}

Then call with UFCS + property getter syntax.


The other thing is to do function calls. And we might
be able to pull that off too with something like

void foo(string a, string b) {}

auto dcall(alias func, T...)(T args) {
	import std.traits;
	ParameterTypeTuple!func typedArgs;
	foreach(i, ref arg; typedArgs)
		arg.dset = args[i];
	return func(typedArgs);
}

dcall!foo(a, b);



Thus your user code is pretty type-agnostic, with loose
types when requested.


More information about the Digitalmars-d mailing list