I did some forum archeology on joinstring. It was developed over a
couple of years and a couple of threads.
Here:
http://www.jsoftware.com/pipermail/programming/2007-June/007040.html
Then:
http://www.jsoftware.com/pipermail/programming/2007-June/007077.html
A year's fermentation:
http://www.jsoftware.com/pipermail/programming/2008-July/011473.html
And finally:
http://www.jsoftware.com/pipermail/programming/2008-July/011487.html

On Fri, Sep 7, 2012 at 9:15 PM, R.E. Boss <[email protected]> wrote:
> Since
>
>    ;: b._1
> }:@;@(,&' '&.>"1) :.;:
>
> and   (' '&joinstring)   compared to  (;:^:_1)   is not only 20% faster but 
> is also 4 times as lean,  (;:b._1)  better can be
> redefined.
>
>
> R.E. Boss
>
>
>> -----Oorspronkelijk bericht-----
>> Van: [email protected] 
>> [mailto:[email protected]] Namens Ric Sherlock
>> Verzonden: vrijdag 7 september 2012 9:18
>> Aan: [email protected]
>> Onderwerp: Re: [Jprogramming] flattening boxed strings
>>
>> None of these versions seem to provide much (any?) benefit over and
>> above the joinstring verb from strings.
>>
>>    timespacex 'b2o x'
>> 0.145468 4.1748e7
>>    timespacex 'b2q x'
>> 0.145305 4.1748e7
>>    timespacex 'SP joinstring x'
>> 0.143562 4.17485e7
>>
>> When we inspect joinstring the reason becomes clear ... they are doing
>> essentially the same thing except that joinstring takes a left
>> argument which defaults to ''.
>> joinstring=: ''&$: : (#@[ }. <@[ ;@,. ])
>> bto=:                 }.@((<' ') ;@,. ])
>>
>> Note that the inverse of joinstring is:
>> splitstring=: #@[ }.each [ (E. <;.1 ]) ,
>>
>>
>> On Fri, Sep 7, 2012 at 5:00 PM, Roger Hui <[email protected]> wrote:
>> >    SP=: ' '
>> >    b2o=: }.@((<SP) ;@,.  ])
>> >    b2q=: }:@((<SP) ;@,.~ ])
>> >
>> >    x=: (1e6 ?@$ 20) $&.> 'x'
>> >
>> >    (b2o -: b2q) x
>> > 1
>> >
>> >    timer 'b2o x'
>> > 0.388007
>> >    timer 'b2q x'
>> > 0.262082
>> >
>> >
>> >
>> > On Thu, Sep 6, 2012 at 4:07 PM, Ian Clark <[email protected]> wrote:
>> >
>> >> Quite right, Raul. And strings containing newlines do matter to me. A lot.
>> >>
>> >> I confess I only threw in bpv as a bit of a joke. It relies on 5!:5
>> >> converting boxed z to...
>> >> <;._1 ' alpha bravo charlie'
>> >> which it doesn't always. In fact, it returns your example without change
>> >> ...
>> >>
>> >>    z123=: '1';'2';'3'
>> >>    5!:5 <'z123'
>> >> '1';'2';'3'
>> >>
>> >> So I fear bpv doesn't merit close attention.
>> >>
>> >> (I suspect ;:inv will eventually let me down too, but I haven't fooled it
>> >> yet!)
>> >>
>> >> b2o and its sister b2f do matter, however, as I propose to put serious
>> >> weight on them, as g.p. utilities.
>> >>
>> >> b2o=: }.@((<SP) ;@,. ])
>> >> b2f=: }.@((<LF) ;@,. ])
>> >>
>> >> so I'd be grateful to be notified of anyone making them misbehave.
>> >>
>> >> Possible gray areas to investigate: use of i{a. where i>127, utf-8,
>> >> boxed scalars, strings with CRLF, 0{a. and other subasciis, uses of a:
>> >> , etc, etc.
>> >>
>> >> On Thu, Sep 6, 2012 at 11:43 PM, Raul Miller <[email protected]>
>> >> wrote:
>> >> > Note that bpv would also have problems with boxed strings containing
>> >> > spaces, and even worse problems with boxed strings containing
>> >> > newlines.  (It's not clear, though, if strings containing newlines
>> >> > matter to you.)
>> >> >
>> >> > --
>> >> > Raul
>> >> >
>> >> > On Thu, Sep 6, 2012 at 6:39 PM, Ian Clark <[email protected]> wrote:
>> >> >> Right you are.
>> >> >>
>> >> >> What I really want (but haven't said) is the fastest versions of b2o
>> >> >> (boxed-to-open-string) and b2f (boxed-to-LF-separated-string), where
>> >> >> b2f is b2o with ' ' (-:SP) replaced with LF.
>> >> >>
>> >> >> I think I've got them now, thanks to everyone.
>> >> >>
>> >> >> BTW solutions involving deb aren't general enough, esp for b2f, where
>> >> >> the boxed strings may validly contain multiple spaces.
>> >> >>
>> >> >> On Thu, Sep 6, 2012 at 11:32 PM, Raul Miller <[email protected]>
>> >> wrote:
>> >> >>> I prefer
>> >> >>>    ;:inv z
>> >> >>>
>> >> >>> But note that
>> >> >>>
>> >> >>>   deb,' ',.>z
>> >> >>>
>> >> >>> would work.  (J6 users need require'strings' before this can work.)
>> >> >>>
>> >> >>> FYI,
>> >> >>>
>> >> >>> --
>> >> >>> Raul
>> >> >>>
>> >> >>> On Thu, Sep 6, 2012 at 6:21 PM, Ian Clark <[email protected]>
>> >> wrote:
>> >> >>>> Yes, but we need a string.
>> >> >>>> You can ravel the 2D array to get a string, viz:
>> >> >>>>    ,> z
>> >> >>>> but it gives you a varying number (0 or more) of separating spaces.
>> >> >>>>
>> >> >>>> On Thu, Sep 6, 2012 at 10:50 PM, km <[email protected]> wrote:
>> >> >>>>>     > 'alpha';'bravo';'charlie'
>> >> >>>>>  alpha
>> >> >>>>>  bravo
>> >> >>>>>  charlie
>> >> >>>>>
>> >> >>>>> I'm resending because the echo from Jsoftware to my iPad was
>> >> incorrect.  Hope this one shows my solution was to open the list of boxes.
>> >> >>>>>
>> >> >>>>> Sent from my iPad
>> >> >>>>>
>> >> >>>>>
>> >> >>>>> On Sep 6, 2012, at 4:32 PM, km <[email protected]> wrote:
>> >> >>>>>
>> >> >>>>>>> 'alpha';'bravo';'charlie'
>> >> >>>>>> alpha
>> >> >>>>>> bravo
>> >> >>>>>> charlie
>> >> >>>>>>
>> >> >>>>>> (shape 3 7)
>> >> >>>>>>
>> >> >>>>>> Sent from my iPad
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> On Sep 6, 2012, at 11:38 AM, Ian Clark <[email protected]>
>> >> wrote:
>> >> >>>>>>
>> >> >>>>>>> Kindergarten class...
>> >> >>>>>>>
>> >> >>>>>>> I have a list of boxed literals...
>> >> >>>>>>>  z=: 'alpha' ; 'bravo' ; 'charlie'
>> >> >>>>>>>
>> >> >>>>>>> I want to flatten it to a literal, but with spaces between.
>> >> (Variant:
>> >> >>>>>>> --with LF's).
>> >> >>>>>>>
>> >> >>>>>>> Raze (;) does indeed flatten the list...
>> >> >>>>>>>  ;z
>> >> >>>>>>> alphabravocharlie
>> >> >>>>>>>
>> >> >>>>>>> There's got to be a really neat extended Raze which includes
>> >> >>>>>>> separators. But the fastest I've been able to come up with is:
>> >> >>>>>>>
>> >> >>>>>>>  b2o=: }.@((<' ') ;@,. ])
>> >> >>>>>>>  b2o z
>> >> >>>>>>> alpha bravo charlie
>> >> >>>>>>>
>> >> >>>>>>> Any advances?
>> >> >>>>>>>
>> >> ----------------------------------------------------------------------
>> >> >>>>>>> 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
>> ----------------------------------------------------------------------
>> 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