Just to give a concrete example:
If I have a hashmap object T.
T

┌──┐

│24│

└──┘

And then I want to add some pair "keyX", <"24" to my hashmap, then later when I 
am testing what the values of all the entries of T are, I come across "keyX" 
and run  GetType on <"24" and I think the value is a hashmap. Actually it's 
worse, because I think it is the parent hashmap, so if I tried to run some 
recursive functions on the values of T I may end up in an infinite loop because 
I continually reference T as the value of "keyX". Scary stuff.


> From: [email protected]
> To: [email protected]
> Date: Fri, 1 May 2015 13:04:53 +0100
> Subject: Re: [Jprogramming] Datatype of an Object
> 
> The problem is, I am working on a J hashmap/dictionary implementation. And 
> there seems little point if the hashmap can not contain another hashmap as a 
> value. But if it does contain such a value, it becomes necessary to be able 
> to differentiate it from just an ordinary boxed literal. 
> Using a GetType style of verb is a partial solution, but I wonder if I just 
> so happen to add a key value pair to my dictionary where the value is a boxed 
> literal that happens to have exactly the same look as another dictionary 
> object I have lying around. This could screw a lot of things up, because 
> GetType would and could interpret this value as the object, even though it 
> has nothing to do with it.  This could actually screw everything up. Anyway, 
> it's the solution I'm using until I can find something better.
> One workaround I am thinking of as I type (may not make sense), is to add all 
> created dictionaries to an array somewhere and reference everything from that 
> array. Then, somehow, if I add a key/value pair to my parent Dictionary, 
> where the value is another dictionary, the actual value to store could be an 
> index of the array, instead of the actual dictionary object. 
> 
> Regards,Jon
> 
> > From: [email protected]
> > Date: Fri, 1 May 2015 07:43:40 -0400
> > To: [email protected]
> > Subject: Re: [Jprogramming] Datatype of an Object
> > 
> > The other way is to structure your data so you know what you are working 
> > with.
> > 
> > For example, maintain a parallel structure with the "type information"
> > that you want to be tracking here.
> > 
> > Thanks,
> > 
> > -- 
> > Raul
> > 
> > On Fri, May 1, 2015 at 1:26 AM, Jon Hough <[email protected]> wrote:
> > > This seems to be the easiest solution:
> > >
> > >
> > > GetType =: 3 : 0
> > >
> > >
> > >
> > > try.
> > >
> > >
> > >
> > > 0{ 18!:2 y
> > >
> > >
> > >
> > > catch. datatype y end.
> > >
> > > )
> > >
> > >
> > >
> > >
> > > I don't like the idea of relying on an error to branch the output, but I 
> > > don't know any other way and this seems to output exactly what I need.
> > > Thanks all.
> > >
> > >> Date: Fri, 1 May 2015 10:18:38 +0800
> > >> From: [email protected]
> > >> To: [email protected]
> > >> Subject: Re: [Jprogramming] Datatype of an Object
> > >>
> > >> use 18!:0 to test for locale name.  eg.
> > >> 18!:0 <'foo'
> > >>
> > >> Пт, 01 май 2015, Jon Hough написал(а):
> > >> > Thanks,
> > >> > It seems 18!:2 is more or less what I need.
> > >> >  However, it gives an error for Boxed literals.  I think I will need 
> > >> > to wrap my verb in a try catch and if itcatches an error I know I am 
> > >> > dealing with a standard J type.
> > >> >
> > >> > You may be wondering why I would get myself intoa situation where I 
> > >> > mistake a boxed literal for an object, but I am creating data 
> > >> > structures thatare arrays of both Objects and standard J types. So I 
> > >> > need to inspect each item in the structureto see if it is a boxed 
> > >> > variable or an object.
> > >> >
> > >> > > Date: Thu, 30 Apr 2015 21:06:01 -0400
> > >> > > From: [email protected]
> > >> > > To: [email protected]
> > >> > > Subject: Re: [Jprogramming] Datatype of an Object
> > >> > >
> > >> > > You could look at the path of the object, with
> > >> > >
> > >> > > 18!:2 Obj
> > >> > >
> > >> > > Since the path is under the control of the user, you would have to 
> > >> > > know
> > >> > > what you do with the path to be able to make sense of it.  Often, the
> > >> > > first atom in the path would tell you what you are looking for.
> > >> > >
> > >> > >
> > >> > >
> > >> > > An object (called a 'numbered locale' in the J docs) is not a boxed
> > >> > > integer: it's a boxed string that contains all numberics.  You could
> > >> > > check for that with
> > >> > >
> > >> > > isnumloc =: *./@:e.&'0123456789'@>
> > >> > >
> > >> > > Henry Rich
> > >> > >
> > >> > > (Note that it is an error for the first character of a numbered 
> > >> > > locale
> > >> > > to be '0').
> > >> > >
> > >> > >
> > >> > > On 4/30/2015 8:57 PM, Jon Hough wrote:
> > >> > > > It seems of I have an Object,e.g.Obj =: conew 'MyClass'
> > >> > > > And later I want to get the type of Obj
> > >> > > > datatype Obj
> > >> > > > this returns "boxed", which is technically correct, but it seems 
> > >> > > > datatype lacks the introspection to look beneath the box at the 
> > >> > > > object.
> > >> > > > So is there a way to get the type (i.e. class name if possible) of 
> > >> > > > an object?
> > >> > > > e.g. I have some variable Q (which happens to be an instance of 
> > >> > > > MyClass).Is there a way to create a verb, getTypeOf, such that 
> > >> > > > getTypeOf Q
> > >> > > > returns 'MyClass'
> > >> > > > I couldn't find anything in JForC on this.  At the moment I am 
> > >> > > > finding it difficult to differentiate boxedintegers from objects.
> > >> > > > ----------------------------------------------------------------------
> > >> > > > For information about J forums see 
> > >> > > > http://www.jsoftware.com/forums.htm
> > >> > > >
> > >> > > ----------------------------------------------------------------------
> > >> > > For information about J forums see 
> > >> > > http://www.jsoftware.com/forums.htm
> > >> >
> > >> > ----------------------------------------------------------------------
> > >> > For information about J forums see http://www.jsoftware.com/forums.htm
> > >>
> > >> --
> > >> regards,
> > >> ====================================================
> > >> GPG key 1024D/4434BAB3 2008-08-24
> > >> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
> > >> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
> > >> ----------------------------------------------------------------------
> > >> For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
>                                         
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
                                          
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to