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

Reply via email to