TypeFunction example: ImplictConvTargets
foobar
foo at bar.com
Tue Oct 6 11:34:10 UTC 2020
On Tuesday, 6 October 2020 at 03:50:11 UTC, Stefan Koch wrote:
> On Tuesday, 6 October 2020 at 00:25:40 UTC, foobar wrote:
>> On Monday, 5 October 2020 at 21:20:36 UTC, Stefan Koch wrote:
>>> On Monday, 5 October 2020 at 21:13:09 UTC, Paul Backus wrote:
>>>> On Monday, 5 October 2020 at 20:57:04 UTC, Stefan Koch wrote:
>>>>> On Monday, 5 October 2020 at 12:50:39 UTC, Andrei
>>>>> Alexandrescu wrote:
>>>>>
>>>>>> [...]
>>>>>
>>>>> This code does not work.
>>>>> I don't even need to compile it to see that.
>>>>
>>>> It has some simple mistakes, but the fundamental idea is
>>>> sound. Here's a version that actually compiles:
>>>>
>>>> import std.meta;
>>>>
>>>> alias Numerics = AliasSeq!(byte, ubyte, short, ushort, int,
>>>> uint, long, ulong, float, double, real, char, wchar, dchar);
>>>> enum convertsTo(T, U) = is(T : U);
>>>> alias ImplicitConversionTargets(T) =
>>>> Filter!(ApplyLeft!(convertsTo, T), Numerics);
>>>>
>>>> // prints: (int, uint, long, ulong, float, double, real,
>>>> dchar)
>>>> pragma(msg, ImplicitConversionTargets!int);
>>>> // prints: (float, double, real)
>>>> pragma(msg, ImplicitConversionTargets!double);
>>>
>>> Now post it with all transitive dependencies.
>>> And we have a fair comparison.
>>
>> Post your code with all changes to the language and compiler.
>> Then we have a fair comparison.
>
> Actually no.
> The compiler changes don't affect the user.
> They're for a small number of people to know about and support.
> Typefunctions and CTFE are together still much less complicated
> than the template system is.
>
> I have nothing to hide though here it is
> https://github.com/dlang/dmd/compare/master...UplinkCoder:talias_master
>
> 650 lines of rather clean code which can in the future be
> factored with the respective semantic routines.
Actuallly yes.
The language changes affect the user. This is a large change to
the language which puts back in the compiler what we do in
libraries. Whoop-de-do.
Do type functions do anything new?
More information about the Digitalmars-d
mailing list