I agree. I was surprised a couple of times when GNU APL automatically terminated a string. I don't remember APL automatically terminating strings. I think I'd rather see an error too.
Just an opinion. Thanks. Blake On Tue, May 20, 2014 at 12:15 AM, Elias Mårtenson <loke...@gmail.com> wrote: > Hello Jürgen, > > I know that you consider parsing unterminated strings to be a feature, but > I would ask you to reconsider this. > > It is my personal opinion that this causes more opportunities for > confusion than potential benefits. I would like to share the latest such > problem that I came across: > > I was looking at how GNU APL was parsing complex numbers, and I typed the > following: > > > * ⍎'2J3"* > 2J3 > > Note how I had accidentally terminated the string using a double quote > instead of a single quote. This was a typo on my part. > > If unterminated strings had resulted in an error, as I am proposing, I > woul dhave gotten a SYNTAX ERROR (probably) and I my mistake would have > been clear. Instead, it looked almost correct. > > I did notice that there was a space preceding the complex number, so I did > this: > > * 8⎕CR ⍎'2J3"* > ┌→──────┐ > │2J3 ┌⊖┐│ > │ │ ││ > │ └─┘│ > └∊──────┘ > > OK, now I was really confused. It took a while for me to figure out that I > had actually been bitten by the unterminated array feature twice in a > single statement: First, the input was parsed by GNU APL as *⍎'2J3"'*. > Then, the lamp function interpreted its argument 2J3" as 2J3"", yielding > a two-element array consisting of a complex number and an empty array. > > I think not giving an error in this case causes more confusion than it's > worth. > > Finally, when reading the evaluation sequence in section 6.1.1 of the > standard, I interpret that as this is required to signal syntax-error in > this situation. > > Regards, > Elias >