Actually, I implemented a serializer already. You can find a copy of it here: http://jsoftware.com/pipermail/programming/2012-February/027263.html
The suggestion you were responding to -- that I implement it in C -- was based on the idea that most everything I need to implement it has already been implemented in the J interpreter. I mostly would need to remove some features from the current 5!:5 implementation. -- Raul On Sun, Feb 19, 2012 at 3:09 PM, Ian Clark <earthspo...@gmail.com> wrote: > > This all means that I should probably implement a serializer in J source. > > Maybe 5!:7? (In my "copious free time..."). > > @Raul If you do find time to implement a serializer you may (/ may > not?) find it helpful to glance at the code in lobrow.ijs (the newer > one) at: http://www.jsoftware.com/jwiki/IanClark/LoBrow. Particularly > the verb: namepick2ijs -which I use routinely to dump the contents of > an arbitrary locale to a j-script. > > Conversely, if you know how to defeat namepick2ijs then of course I'd > like to know. > > Admittedly it outputs j-words for re-input by (0!:*) not (".). And > it's cleverer at nouns than at non-nouns, aiming to produce a readable > script. Thus it outputs L, originated as: > > L=: 'able',LF,'baker' > > as: > > L=: }: 0 : 0 > able > baker > ) > > rather than: > > 5!:5 <'L' > 97 98 108 101 10 98 97 107 101 114{a. > > I hope it saves you time and doesn't set you back. It's served me well > this past year or so. (But maybe the code I encounter isn't all that > challenging...?) > > On Sun, Feb 19, 2012 at 4:20 PM, Raul Miller <rauldmil...@gmail.com> > wrote: > > The undocumented behavior of 5!:5 is: that I have assumed that linear > > representation of nouns is a serialized representation. > > > > In other words, if I create a multi-paragraph 0 :0 noun, the dictionary > > does not guarantee that it will give me an executable representation of > > that noun -- hypothetically speaking, the interpeter could use the same > > kind of representation technique that it uses for large multi-line > explicit > > verbs. > > > > This all means that I should probably implement a serializer in J source. > > Maybe 5!:7? (In my "copious free time..."). > > > > FYI, > > > > -- > > Raul > > > > On Sat, Feb 18, 2012 at 4:09 PM, Dan Bron <j...@bron.us> wrote: > > > >> Neat application! > >> > >> What behavior of 5!:5 do you use here, that is undocumented? The > question > >> of whether the behavior you observed in `:6 here, hinges on the > definition > >> of "gerund", and the fact that you can do just this is one reason why I > >> defined it as I did. Moreover, this behavior is consistent, as you > replace > >> `:6 with (e.g.) @.0 in your utility, with the same results. > >> > >> -Dan > >> > >> -----Original Message----- > >> From: programming-boun...@jsoftware.com [mailto: > >> programming-boun...@jsoftware.com] On Behalf Of Raul Miller > >> Sent: Saturday, February 18, 2012 3:10 PM > >> To: Programming forum > >> Subject: [Jprogramming] serialization, in J > >> > >> In another thread, I was struggling to discuss issues which conflicted > >> with the topic. > >> > >> So... I am making a new topic: �Given a nameable entity, in J, > >> construct a list of characters that can be used in ". to recreate that > >> nameable entity. � (A nameable entity, in J, is something that can be > >> enclosed in parenthesis and still be syntactically valid.) > >> > >> This mechanism is very like the "serialization" that I use in other > >> languages, so I will call it "serialization". > >> > >> Serialization is very like J's linear representation, but not quite. > >> The problem with linear representation, is that it's not always valid > >> for ". > >> > >> Here's an example of the reason we cannot use linear representation > >> (5!:5) for serialization: > >> > >> � ".'copyoflist=.',5!:5<'list_z_' > >> |spelling error > >> > >> Or, more formally: > >> � ".'copyoflist=.(',(5!:5<'list_z_'),')' > >> |spelling error > >> > >> 5!:5 does not always generate a character sequence which is valid > >> between parenthesis, when it is presented with a name which is not a > >> noun. �Apparently, though, when given a noun, it always serializes the > >> noun. �[I do not have handy any written guarantees of this, but I also > >> have not been able to construct any counter examples.) > >> > >> So, that suggests a serialization mechanism like this: > >> > >> serializeNamedEntity=: 3 :0 > >> �select. nc <y > >> � �case.0 do. 5!:5 <y > >> � �case. �do. '(',')`:6',~5!:5 <'m' [ m=. 5!:1 <y > >> �end. > >> ) > >> > >> And, as a test: > >> > >> �".'example1=:',serializeNamedEntity 'serializeNamedEntity' > >> > >> �'example1' (-:&(5!:1)&<) 'serializeNamedEntity' > >> 1 > >> �". ']&example3=:',serializeNamedEntity 'example2'[ example2=: a. > >> > >> �'example3' (-:&(5!:1)&<) 'example2' > >> 1 > >> > >> It's probably also good for adverbs and conjunctions (which is why I > >> had the entity specified by name, rather than by value). > >> > >> This depends on undocumented behavior of 5!:5 and of `:6, but it seems > >> reasonably robust. > >> > >> It might be worthwhile using 5!:5 directly, and testing its result and > >> falling back to the longer mechanism only when necessary. > >> > >> -- > >> Raul > >> ---------------------------------------------------------------------- > >> 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