Re: Nested associative arrays

2010-11-14 Thread spir
On Sun, 14 Nov 2010 10:35:42 +0100
spir denis.s...@gmail.com wrote:

  I finally found the bit where it describes associative array literals 
  and they look identical to initialising a flat array, so god only knows 
  which one gets picked when. It would be better if they where made 
  different.  
 
 ... with the tiny difference AAs are supposed to have (explicite) keys ;-)

Oops, sorry for the noise...

Denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com



Re: Nested associative arrays

2010-11-14 Thread Jacob Carlborg

On 2010-11-13 18:27, div0 wrote:

On 13/11/2010 15:49, Jacob Carlborg wrote:

On 2010-11-13 14:56, div0 wrote:

On 13/11/2010 11:02, Jacob Carlborg wrote:

On 2010-11-12 17:44, Ellery Newcomer wrote:

Should be. Are you having problems?

(I don't use them much, but fwiw, it seems like tango had some
[trivial?] problems with them)

On 11/12/2010 10:08 AM, Jacob Carlborg wrote:

Is D supposed to be able to handle nested associative arrays ?




Well, yes. The following code:

module main;

void main ()
{
auto tree = [ : [ : ]];
}

Using DMD 1.065 results in:

Assertion failed: (0), function toExpression, file init.c, line 437.


That's static initialisation not an AA.

alias string[char] innerAA;
alias innerAA[int] outerAA;

outerAA x;
innerAA t;

x[2] = t;

auto y = x[2];
y['c'] = cat;

I've no idea what'll happen if you start passing it around though.


How about associative array literal then? Regardless of what you call
it I shouldn't get an assertion failure.



True. It's been fixed in dmd2 though, you get:

Error: Integer constant expression expected instead of 

When it's auto the compiler thinks you are doing static initialisation
of a flat array, not an AA. You have to do what Ellery said.


Well, that's no fun. How many are using the Static Initialization of 
Static Arrays syntax: 
http://www.digitalmars.com/d/2.0/arrays.html#static-init-static ?


--
/Jacob Carlborg


Re: Nested associative arrays

2010-11-13 Thread Jacob Carlborg

On 2010-11-12 17:44, Ellery Newcomer wrote:

Should be. Are you having problems?

(I don't use them much, but fwiw, it seems like tango had some
[trivial?] problems with them)

On 11/12/2010 10:08 AM, Jacob Carlborg wrote:

Is D supposed to be able to handle nested associative arrays ?




Well, yes. The following code:

module main;

void main ()
{
auto tree = [ : [ : ]];
}

Using DMD 1.065 results in:

Assertion failed: (0), function toExpression, file init.c, line 437.

--
/Jacob Carlborg


Re: Nested associative arrays

2010-11-13 Thread bearophile
Jacob Carlborg:

 module main;
 
 void main ()
 {
  auto tree = [ : [ : ]];
 }
 
 Using DMD 1.065 results in:
 
 Assertion failed: (0), function toExpression, file init.c, line 437.

Please put it in Bugzilla if not already present :-)

Bye,
bearophile


Re: Nested associative arrays

2010-11-13 Thread div0

On 13/11/2010 11:02, Jacob Carlborg wrote:

On 2010-11-12 17:44, Ellery Newcomer wrote:

Should be. Are you having problems?

(I don't use them much, but fwiw, it seems like tango had some
[trivial?] problems with them)

On 11/12/2010 10:08 AM, Jacob Carlborg wrote:

Is D supposed to be able to handle nested associative arrays ?




Well, yes. The following code:

module main;

void main ()
{
auto tree = [ : [ : ]];
}

Using DMD 1.065 results in:

Assertion failed: (0), function toExpression, file init.c, line 437.


That's static initialisation not an AA.

alias string[char]  innerAA;
alias innerAA[int]  outerAA;

outerAA x;
innerAA t;

x[2] = t;

auto y = x[2];
y['c'] = cat;

I've no idea what'll happen if you start passing it around though.

--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk


Re: Nested associative arrays

2010-11-13 Thread Jacob Carlborg

On 2010-11-13 14:56, div0 wrote:

On 13/11/2010 11:02, Jacob Carlborg wrote:

On 2010-11-12 17:44, Ellery Newcomer wrote:

Should be. Are you having problems?

(I don't use them much, but fwiw, it seems like tango had some
[trivial?] problems with them)

On 11/12/2010 10:08 AM, Jacob Carlborg wrote:

Is D supposed to be able to handle nested associative arrays ?




Well, yes. The following code:

module main;

void main ()
{
auto tree = [ : [ : ]];
}

Using DMD 1.065 results in:

Assertion failed: (0), function toExpression, file init.c, line 437.


That's static initialisation not an AA.

alias string[char] innerAA;
alias innerAA[int] outerAA;

outerAA x;
innerAA t;

x[2] = t;

auto y = x[2];
y['c'] = cat;

I've no idea what'll happen if you start passing it around though.


How about associative array literal then? Regardless of what you call 
it I shouldn't get an assertion failure.


--
/Jacob Carlborg


Re: Nested associative arrays

2010-11-13 Thread Jacob Carlborg

On 2010-11-13 14:39, bearophile wrote:

Jacob Carlborg:


module main;

void main ()
{
  auto tree = [ : [ : ]];
}

Using DMD 1.065 results in:

Assertion failed: (0), function toExpression, file init.c, line 437.


Please put it in Bugzilla if not already present :-)

Bye,
bearophile


Done: http://d.puremagic.com/issues/show_bug.cgi?id=5211

--
/Jacob Carlborg


Re: Nested associative arrays

2010-11-13 Thread div0

On 13/11/2010 15:49, Jacob Carlborg wrote:

On 2010-11-13 14:56, div0 wrote:

On 13/11/2010 11:02, Jacob Carlborg wrote:

On 2010-11-12 17:44, Ellery Newcomer wrote:

Should be. Are you having problems?

(I don't use them much, but fwiw, it seems like tango had some
[trivial?] problems with them)

On 11/12/2010 10:08 AM, Jacob Carlborg wrote:

Is D supposed to be able to handle nested associative arrays ?




Well, yes. The following code:

module main;

void main ()
{
auto tree = [ : [ : ]];
}

Using DMD 1.065 results in:

Assertion failed: (0), function toExpression, file init.c, line 437.


That's static initialisation not an AA.

alias string[char] innerAA;
alias innerAA[int] outerAA;

outerAA x;
innerAA t;

x[2] = t;

auto y = x[2];
y['c'] = cat;

I've no idea what'll happen if you start passing it around though.


How about associative array literal then? Regardless of what you call
it I shouldn't get an assertion failure.



True. It's been fixed in dmd2 though, you get:

Error: Integer constant expression expected instead of 

When it's auto the compiler thinks you are doing static initialisation 
of a flat array, not an AA. You have to do what Ellery said.


--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk


Re: Nested associative arrays

2010-11-13 Thread spir
On Sat, 13 Nov 2010 17:27:08 +
div0 d...@sourceforge.net wrote:

  How about associative array literal then? Regardless of what you call
  it I shouldn't get an assertion failure.
   
 
 True. It's been fixed in dmd2 though, you get:
 
 Error: Integer constant expression expected instead of 
 
 When it's auto the compiler thinks you are doing static initialisation 
 of a flat array, not an AA. You have to do what Ellery said.

But the compiler (D2) accepts nested aa literals remaining anonymous:
writeln([a : [b : c]]);   // -- a:b:c
(where auto aa = ... fails)

Denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com



Re: Nested associative arrays

2010-11-13 Thread div0

On 13/11/2010 20:02, spir wrote:

On Sat, 13 Nov 2010 17:27:08 +
div0d...@sourceforge.net  wrote:


How about associative array literal then? Regardless of what you call
it I shouldn't get an assertion failure.



True. It's been fixed in dmd2 though, you get:

Error: Integer constant expression expected instead of 

When it's auto the compiler thinks you are doing static initialisation
of a flat array, not an AA. You have to do what Ellery said.


But the compiler (D2) accepts nested aa literals remaining anonymous:
 writeln([a : [b : c]]);// --  a:b:c
(where auto aa = ... fails)

Denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com



yeah, but dmd's parser was written by hand so it's not surprising there 
are inconsistency's with what works where.


I finally found the bit where it describes associative array literals 
and they look identical to initialising a flat array, so god only knows 
which one gets picked when. It would be better if they where made different.


--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk


Re: Nested associative arrays

2010-11-12 Thread Ellery Newcomer

Should be. Are you having problems?

(I don't use them much, but fwiw, it seems like tango had some 
[trivial?] problems with them)


On 11/12/2010 10:08 AM, Jacob Carlborg wrote:

Is D supposed to be able to handle nested associative arrays ?