Can we make mixin applications first class at the type level?
FeepingCreature
feepingcreature at gmail.com
Thu Mar 21 12:56:59 UTC 2019
On Thursday, 21 March 2019 at 12:49:44 UTC, sighoya wrote:
> No, they don't. std.meta give you AliasSeq:
>
> template AliasSeq(TList...)
> {
> alias AliasSeq = TList;
> }
>
> which seems to be a hack.
> Does it work if I want to have a map instead, no!
>
staticMap... do you mean a mapping of types to other types? Use
specialized templates:
alias foo(T : int) = string;
alias foo(T : string) = float;
> The limitations we have here are owed by the constrained
> support of type level programming. We can't do all what we can
> do at runtime at compile time because the static programming is
> very limited except? we execute a runtime function at compile
> time but a runtime function can also be executed at runtime and
> can't handle transformations on types because types don't exist
> at runtime, but strings exists at runtime, right?
> ...
> If we would have AliasMap which is mutable, then maybe.
It sounds like you're committed to doing imperative logic to
manipulate types, when there's a rich library of functional
template-based solutions to type problems. Could D offer ctfe
native manipulation of types? Sure, and it would be handier in
many situations, but there's a rich library of functional,
template-based idioms available for your use that can, in my
opinion, probably solve any type problem you have, and won't
require you using strings as a weird metalanguage out of no
clearly established need.
More information about the Digitalmars-d
mailing list