--- Comment #4 from 2011-12-09 03:13:08 PST ---
(In reply to comment #3)

> > In languages as Java and Pascal boolean values and integer values are two
> > very distinct types. In languages like C/C++/D/Python boolean is a kind of
> > subset of integer type.

> Where did you get the idea that that applies to D?

This program compiles with -w too, a bool is accepted in many situations where
you ask for an integer, like assignments and function arguments:

void foo(int x) {}
void main() {
    bool b = true;
    int y = b;

> > There are many situations where the implicit true -> 1 conversion is handy.
> Name one.

Counting true values:

void main() {
    auto s1 = "hello";
    auto s2 = "hallo";
    int hamming_distance = 0;
    assert(s1.length == s2.length);
    foreach (i, c1; s1)
        hamming_distance += c1 != s2[i];
    assert(hamming_distance == 1);

In a Delphi/Java language you need something like:

if (c1 != s2[i]) hamming_distance++;

> There are many uses for 1 -> true.

Yet in D you need a cast to do it:

void main() {
    int x = 1;
    bool b = x;

test.d(3): Error: cannot implicitly convert expression (x) of type int to bool

> I can't see why:
> int a = b > c;  should compile.

Because this is how D is designed, coming from C/C++. Languages like
Pascal/Java that keep very apart integer and boolean types are OK, and I accept
their design decisions, but D is not done this way, and I think this will not
change. This is why I think designing BigInt against the way the other parts of
D language are designed is bad.

> >I don't think the implicit true -> 1 conversion will be removed from D2,
> This is what I disagree with. It's another evil implicit conversion.

If this implicit conversion will be removed from D, then I agree that it will
be right for BigInt too to forbid it. But the right thing for BigInt is to act
like normal D ints (where possible and meaningful).

This is not a BigInt battle, it's a battle to remove implicit conversions in
normal D ints, and its place is in D newsgroups and another enhancement

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to