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