not to mention its much harder to implement in language, whereas its
trivial in the library. Also, it makes instrumentation easier, if one wants
to add a callback/logging/breakpoint for a particular cast operation. Seems
much harder with language solution.

On Fri, Jun 7, 2013 at 6:53 PM, Mrzlga <[email protected]> wrote:

> Timothy,
>
> How do you get everyone to use:
>     a.Cast!Signed
>     a.Cast!Unsigned
>     a.Cast!Const
>     a.Cast!Immutable
>     a.Cast!Shared
>
> And to stop using:
>     cast(const)
>     cast(immutable)
>     cast(shared)
>     cast(inout) ?
>
> And have everyone be consistent about it?
>
> Remove the cast() ones from the language?
>

not suggesting deprecating cast(), just suggesting there's no need to
extend the language as it can be done in library code, advantageously. It's
trivially extensible as I wrote it. However, any language extension has to
be re-implemented by each compiler implementation.


> And what about variations, 'shared const', 'inout shared', etc?
>

it's trivial to add to my code a.Cast!"shared const" or a.Cast!SharedConst,
etc, as well as more complex ones.


> There are some things that should be available to the language, even when
> no modules are imported. I think dealing with the basic type system is like
> that.
>

Not if the syntax sugar provided by the language is no simple than that
provided by library solution. I've argued library solution is more
consistent with UFCS (see my code).

Reply via email to