Thanks, I will give it a look. On thr wiki there is an example of a simple dictionary in J, but I was trying to go for something a bit more expansive.
--- Original Message --- From: "Jan-Pieter Jacobs" <[email protected]> Sent: May 1, 2015 9:47 PM To: [email protected] Subject: Re: [Jprogramming] Datatype of an Object There is something related in the general/misc addon: pack I'm not quite sure about how it works or is supposed to be used, but it can provide a nice starting point see "open 'pack' " if you've got the addon installed. Jan-Pieter 2015-05-01 14:38 GMT+02:00 Raul Miller <[email protected]>: > When I have needed something similar, I have used a pair of lists > instead of a pair of atoms. > > Then: look up names in the name list, and extract values from the value list. > > This scales rather nicely, when I need to work with multiple "things". > It also extends fairly directly when I need additional information > associated with the names. > > I guess, though, that it's all about how you think about problems. > > One thing for certain though: whatever you choose, it'll never be > perfect (except in a tautological sense -- if you define perfect as > what you have). > > Thanks, > > -- > Raul > > On Fri, May 1, 2015 at 8:33 AM, Jon Hough <[email protected]> wrote: >> You are right, I was being sloppy with nomenclature. >> >> As for why, it is really to do with communicating with other apps, amd >> languages. I think I mentioned a few months ago I was working on an >> implementation of msgpack for J, just for fun. Well, to implement it I think >> some sort of dictionary object is unavoidable. I tried using boxed pairs to >> represent dictionaries but that was insanity squared, since there is way too >> much ambiguity between lists of 2 items and a key value pair. >> My hashmap implementation actually works pretty well and I can deserialize / >> serialize msgpack with very few bugs (it is still a work in progress), but >> the ambiguity between boxed literals and objects is scaring me a little. >> >> --- Original Message --- >> >> From: "Raul Miller" <[email protected]> >> Sent: May 1, 2015 9:21 PM >> To: "Programming forum" <[email protected]> >> Subject: Re: [Jprogramming] Datatype of an Object >> >> I think you need to be really careful here: >> >> Part 1: >> >> Objects are not values. >> >> Object references are values. >> >> So, already, your dictionary cannot contain a dictionary - it can only >> contain a reference to a dictionary. >> >> Part 2: >> >> "But if it does contain such a value, it becomes necessary to be able >> to differentiate it from just an ordinary boxed literal." >> >> What is that need? >> >> I mean, I get it - you're trying to emulate something from some other >> language. But at the same time, I don't get it - that way lies madness >> (though it can be a good exercise to work through). >> >> I mean, ok, maybe - like you suggest - there isn't a point to all this. >> >> But if you need to have (<'10') be a dictionary reference in one >> context and also need to have (<'10') be something else in some other >> context then you are going to need to have some way of determining >> which context is relevant. And that means either not letting their >> data bleed through into the other context or that means having >> information which identifies the context. >> >> That said, if you want a worked solution, you might be interested in >> something like JD? >> >> Thanks, >> >> -- >> Raul >> >> >> On Fri, May 1, 2015 at 8:04 AM, Jon Hough <[email protected]> wrote: >>> 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 >> ---------------------------------------------------------------------- >> 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
