Interesting rant about Scala's issues
Meta
jared771 at gmail.com
Thu Apr 3 21:54:18 PDT 2014
On Friday, 4 April 2014 at 04:31:41 UTC, Walter Bright wrote:
> On 4/3/2014 7:19 PM, bearophile wrote:
>> I have asked for fully typesafe enums in D,
>
> You can do this:
>
> struct MyInt {
> int x;
> alias this x;
> ... put your various constraints here ...
> }
>
> to get typesafe enums. In fact, you can use this construct to
> create a type that overrides selected behaviors of any other
> type.
Combined with your other post about casts, I'm not sure we're
talking about the same kind of type-safety. In the case of your
example, alias this does not make it typesafe, as a MyInt can
still be implicitly converted to int.
struct MyInt
{
int x;
alias x this;
}
void takesInt(int n)
{
}
void main()
{
//Fine
takesInt(MyInt(1));
}
Implicit conversions are generally not a facet of type-safe
systems. Saying that too-strong typing is bad because casts break
the type system is a strawman, although I agree that there is a
balance that must be struck.
More information about the Digitalmars-d-announce
mailing list