That fixes it. Thank you very much!! On Tue, Mar 22, 2022 at 7:16 AM Dr. Jürgen Sauermann < mail@jürgen-sauermann.de> wrote:
> Hi Blake, > > thanks, see below, > > Best Rgeads, > Jürgen > > > On 3/21/22 8:41 PM, Blake McBride wrote: > > Greetings, > > I wrote the following APL1 code a long time ago. > > ∇ > [0] r←d Parse v > [1] ⍝ Convert vector v into a matrix breaking at delimiter d > [2] r←(((0≠⍴v)×⍴r),⌈/r)⍴(,r∘.≥⍳⌈/r←¯1+(r,1+⍴v)-0,r←r/⍳⍴v)\(~r←v∈d)/v←,v > ∇ > > It worked in 1981 and it works now. > > I believe at some point someone on this list re-wrote the above in GNU APL > (APL2) as follows: > > ∇ > [0] r←d Parse2 v > [1] ⍝ break up vector v according to delimiter d into seperate arrays > [2] r←1↓1↓¨(1++\r∊d)⊂r←(1↑d),(1↑d),v > ∇ > > Interestingly, Parse2 used to work but doesn't anymore. I suppose the > APL2 logic in GNU APL has changed. Two points: > > 1. Can someone help me fix this? (I don't know too much about APL2.) > > Try ⊃Parse2 instead of Parse2: > > * 8 ⎕CR ',' Parse2 'One,Two,Three,Four'* > *┌→─────────────────────────┐* > *│┌→──┐ ┌→──┐ ┌→────┐ ┌→───┐│* > *││One│ │Two│ │Three│ │Four││* > *│└───┘ └───┘ └─────┘ └────┘│* > *└ϵ─────────────────────────┘* > > * 8 ⎕CR ⊃ ',' Parse2 'One,Two,Three,Four'* > *┌→────┐* > *↓One │* > *│Two │* > *│Three│* > *│Four │* > *└─────┘* > > Or change *Parse2[2] *to: > > *[2] r←⊃1↓1↓¨(1++\r∊d)⊂r←(1↑d),(1↑d),v* > > 2. How good is APL2 if it can morph like this? (APL1 seems much more > straightforward and consistent and less open to interpretation.) > > I am pretty sure that this change was caused by a trouble report followed > by a bug fix at some point in time. > The current behaviour of GNU APL looks OK to me (although I am not really > an APL expert). My humble argument > would be that in order to get a not-nested result, the ⊂ in line 2 of > Parse2 would require a matching ⊃. > > Put differently, the original Parse2 was working around a bug in GNU APL > which was fixed later on. > > BTW, for long v, the following is probably more efficient: > > > > *[2] r←⊃1↓1↓¨(1++\r∊d)⊂r←(2/↑d),v * > > Thanks. > > Blake McBride > > >