Re: Variants array and IDK

2011-01-31 Thread Robert Jacques

On Mon, 31 Jan 2011 02:04:11 -0500, g g  wrote:


IDK where to put this.

first thing:
Could it be a way to collapse Variants in std.variant?, like
Variant x = Variant(1)
Variant y = Variant([x,x,x,x])
//y could be simplified to Variant(int[]) instead of  
Variant(Variant(int)[])

//now it is not implemented (as far i know)


// Although this has to be true
assert( y.type == typeid(Variant[]) );
// Should coerce support such lowering/conversions/collapses? i.e.
int[] z = y.coerce!(int[])();


Re: Variants array and IDK

2011-01-31 Thread Robert Jacques

On Mon, 31 Jan 2011 02:04:11 -0500, g g  wrote:


IDK where to put this.

first thing:
Could it be a way to collapse Variants in std.variant?, like
Variant x = Variant(1)
Variant y = Variant([x,x,x,x])
//y could be simplified to Variant(int[]) instead of  
Variant(Variant(int)[])

//now it is not implemented (as far i know)

Also if want to know if using Variant  internally for a scripting  
language is recommendable ( or acceptable)
I am facing the problem? writing my weird language (  
https://github.com/zkp0s/Dw fell free to comment on it __not finished__)


Excuse me if I wrote in the wrong newsgroup. I didn't know where to put  
it, .learn .D or .annouce ( Dw)


Thanks for reading
.


One of Variant's design goals is to be used for interfacing/implementing  
scripting languages. So, yes, I'd say it's both recommended and  
acceptable. In fact, I'd encourage you to post to the newsgroup or  
bugzilla any rough edges you run into with variant. I've been working on  
an update to it which fixes all current bugzilla issues and implements a  
runtime-reflection system.  
(https://jshare.johnshopkins.edu/rjacque2/public_html/variant.mht,  
https://jshare.johnshopkins.edu/rjacque2/public_html/variant.d)


Re: Variants array and IDK

2011-01-31 Thread Nick Sabalausky
"g g"  wrote in message news:ii5mtb$12qv$1...@digitalmars.com...
> IDK where to put this.
>
> first thing:
> Could it be a way to collapse Variants in std.variant?, like
> Variant x = Variant(1)
> Variant y = Variant([x,x,x,x])
> //y could be simplified to Variant(int[]) instead of 
> Variant(Variant(int)[])
> //now it is not implemented (as far i know)
>

The problem with that is that x is only an int at runtime. It's the same 
problem as this:

Variant x = Variant(1);
int z = x;  // ERROR: x might not be an int.

You have to do it like this:

Variant x = Variant(1);
if(x.convertsTo!int())
{
int z = x.coerce!int();
}
else
   // Do something else

Or you skip the "if(x.convertsTo!int())" part if you expect that x should 
always be an int. If it ever isn't an int then coerce will throw an 
exception.

So if you want y to be Variant(int[]), you need to do:

Variant x = Variant(1);
if(x.convertsTo!int())
{
auto xInt = x.coerce!int();
Variant y = Variant([xInt,xInt,xInt,xInt]);
}
else
   // Do something else





Variants array and IDK

2011-01-30 Thread g g
IDK where to put this.

first thing:
Could it be a way to collapse Variants in std.variant?, like
Variant x = Variant(1)
Variant y = Variant([x,x,x,x])
//y could be simplified to Variant(int[]) instead of Variant(Variant(int)[])
//now it is not implemented (as far i know)

Also if want to know if using Variant  internally for a scripting language is 
recommendable ( or acceptable)
I am facing the problem? writing my weird language ( 
https://github.com/zkp0s/Dw fell free to comment on it __not finished__)

Excuse me if I wrote in the wrong newsgroup. I didn't know where to put it, 
.learn .D or .annouce ( Dw)

Thanks for reading
.