Hi Jürgen,

It seems to me that I fully understand the problem and I have a clear idea
of a clean solution.  On the other hand, it may be that I am failing to
articulate it, or I, in fact, do not know what I think I know.  I can't
tell which.

It also seems clear to me that adding yet another patch to the problem will
only needlessly increase the complexity and opportunity for failure - as
we've seen.  To wit, I am wholeheartedly against adding yet another
preference setting.

Perhaps you can give me a scenario in which my original algorithm would
fail.  That would help clarify an error in that algorithm for me.

Thanks!

Blake


On Thu, Apr 9, 2020 at 4:44 AM Dr. Jürgen Sauermann <
mail@jürgen-sauermann.de> wrote:

> Hi Blake,
>
> On 4/8/20 9:17 PM, Blake McBride wrote:
>
> Hi,
>
> As far as I am aware, the del editor displays functions as you do -
> including the indenting of labels and comments.  Yes, it helps looking at
> code.  I am certainly not suggesting changes to that!  The point is that
> the del editor can add that formatting when displaying a function.  That
> format should not be retained internally.  Keeping that format internally
> is causing all of these problems.
>
> Actually no. On my APL2 (PC version) the del editor removes leading spaces
> immediately
> after you entered them.
>
> It appears that in your routines that restore from .apl or .xml files and
> ⎕FX you are (or were) retaining leading and trailing spaces.  That is the
> cause of all of these problems.
>
> #2 does not conflict with #1.  You can store externally any way you like.
> When reading it back you strip leading and trailing spaces.  This way the
> external format can be anything and the internal format is consistent.  No
> conflict.  ⎕CR doesn't have to do anything special because the format is
> already correct.  The del editor can format the lines nicely knowing it is
> starting with a consistent format (no leading or trailing spaces).
>
> This is actually wrong. If we discard extra indentation spaces entered by
> the user in the internal
> format then they are lost as soon as you create the internal format. This
> may on )LOAD, or on
> ⎕FX, or whereever.
>
> If we would, as you propose, remove the user indentation from the internal
> format, then
> every )LOAD - modify - )SAVE (or )DUMP) sequence would inevitably loose
> all user
> indentation. Although the ∇-editor could, as you propose, construct its
> own indentation,
> but this would not keep any user indentation that differs from the
> ∇-editors indentation.
>
> My proposal would be:
>
> -  we add a DROP-INDENTATION setting in the preferences file that, when
> set, discards
>   all user indentation.
>
> - ⎕CR will always drop leading and trailing blanks, regardless of the
> DROP-INDENTATION
>   setting
>
> It would help me if you could summarize the rules for the formatting of
> the ∇-editor,
> it has been a while since I did that and I can't quite remember what the
> rules were.
>
> Thanks!
>
> You're welcome.
> Jürgen
>
> Blake
>
>
> On Wed, Apr 8, 2020 at 2:04 PM Dr. Jürgen Sauermann <
> mail@jürgen-sauermann.de> wrote:
>
>> Hi Blake,
>>
>> I could live with 1. and 3. (which can be fixed in ⎕CR alone).
>>
>> However, 2. is not needed for this and it conflicts with 1. because
>> at least the .xml files store the internal representation in XML format.
>>
>> The IBM ∇-editor is quite rigid in removing indentation but
>> I rather see that as a disadvantage. If you look into my C++
>> source files then you will notice that I have put quite some
>> effort into indentation. I strongly believe that good indentation
>> leads to better readability of code and we should allow that
>> in APL as well.
>>
>> Best regards,
>> Jürgen
>>
>>
>> On 4/8/20 8:31 PM, Blake McBride wrote:
>> > Hi Jürgen,
>> >
>> > How about this for a set of rules:
>> >
>> > 1.  Format .apl and .XML files any way you like.
>> >
>> > 2.  Regardless of how a function is instantiated (.apl, .XML, ⎕FX, the
>> > del editor) the internal representation is all lines left-justified.
>> > Leading and trailing spaces for each line from the source are stripped
>> > away.
>> >
>> > 3.  The del editor displays a function as it does now - but the
>> > leading spaces are added by the del editor for display.
>> >
>> > This way, ⎕CR will be correct (left-justified) and the del editor will
>> > display a consistent output regardless of how the function was
>> > instantiated.
>> >
>> > Thanks!
>> >
>> > Blake
>> >
>> >
>> >
>> > On Wed, Apr 8, 2020 at 1:14 PM Dr. Jürgen Sauermann
>> > <mail@jürgen-sauermann.de <mailto:mail@j%C3%BCrgen-sauermann.de>>
>> wrote:
>> >
>> >     Hi Blake,
>> >
>> >     the problem is that there are no rules for the formatting of the
>> >     functions. I know
>> >     that you had a few proposals in the past, but I haven't found a
>> >     proper mental model
>> >     of how to handle this.
>> >
>> >     Please note that the .apl files are not only used to store
>> >     workspaces, but also for
>> >     creating apl source files (they are my default way of writing apl
>> >     code). Therefore
>> >     formatting in a somewhat readable format is also an aspect
>> >     concerning .apl files.
>> >
>> >     As far as I can see the only real question is how leading spaces
>> >     shall be handled.
>> >     This needs to be clarified for:
>> >
>> >     1. the ∇-editor
>> >     2. ⎕CR
>> >     3. )SAVE/LOADed files
>> >     4. )DUMP/LOADed files
>> >
>> >     If you could come up with set of rules how to handle this in a
>> >     consistent
>> >     way (and satisfying everybody's requirements), then I can try to
>> >     implement
>> >     them.
>> >
>> >     I am not a day-to-day user of APL2, so I can't really tell how
>> >     that one is/was
>> >     supposed to work. My first version of the GNU APL ∇-editor came
>> >     from a vague
>> >     recollection of the ∇-editor in APL68000 back in the 1980s.
>> >
>> >     It is true that the way functions look depends on how the files
>> >     look like. But that
>> >     is on purpose. Otherwise you would loose leading spaces in the
>> >     function text.
>> >     Ig the ∇-editor would remove them then I would consider that more
>> >     as a fault
>> >     than a feature.
>> >
>> >     Best regards,
>> >     Jürgen
>> >
>> >
>> >     On 4/8/20 7:30 PM, Blake McBride wrote:
>> >>     Thanks.  While it appears to work, it's clearly wrong.  The
>> >>     formatting is still being done at the wrong place.  The way I
>> >>     discovered this is to load a .apl file from a prior version of
>> >>     GNU APL.  When I list the function, it's wrong.  So, GNU APL is
>> >>     depending on the format in the file rather than having the del
>> >>     editor format it.  For example:
>> >>
>> >>           )load Utils.apl
>> >>     DUMPED 2019-10-27  12:10:43 (GMT-6)
>> >>           ∇Pin[⎕]∇
>> >>         ∇
>> >>     [0]   n←v Pin q;m;t
>> >>     [1]    ⍝ Input one or more numbers
>> >>     [2]    ⍝ v[1] = minimum value (inclusive)
>> >>     [3]    ⍝ v[2] = maximum value (inclusive)
>> >>     [4]    ⍝ v[3] = numeric increment (i.e. 1 = integer)
>> >>     [5]    ⍝ Remining values are optional
>> >>     [6]    ⍝ v[4] = minimum number of numbers
>> >>     [7]    ⍝ v[5] = maximum number of numbers
>> >>     [8]    ⍝ v[6] = default value of empty entry (or ¯1 means no
>> default)
>> >>     [9]    ⍝ v[7+] = numbers the entered value cannot be
>> >>     [10]   ⍝ q is the prompt
>> >>     [11]   t←⍳0
>> >>     [12]   ⍎(3=⍴v)/'v←v,1 1'
>> >>     [13]   m←v[5]
>> >>     [14]   LP:→(m=⍴t)/EN3
>> >>     [15]   EN1:→(EHN n←CS PI q,'?')/0,0,EN2
>> >>     [16]   →(v[⍳5]Lck n)/EN1
>> >>     [17]   n[Omega n='-']←'¯'
>> >>     [18]   →(∨/(n←⍎n)∈6↓v)/ER1
>> >>     [19]   t←t,n
>> >>     [20]   v[5]←v[5]-⍴,n
>> >>     [21]   →LP
>> >>     [22]   EN2: →(0≠⍴t)/EN3
>> >>     [23]   →(5=⍴v)/0
>> >>     [24]   →(v[6]=¯1)/0
>> >>     [25]   t←v[,6]
>> >>     [26]   EN3:⍎'n←',((m=1)/'''''⍴'),'t'
>> >>     [27]   →0
>> >>     [28]   ER1:→EN1 ∆ ER(⍕n), ' already exists; Please reenter.'
>> >>         ∇
>> >>
>> >>     Thanks!
>> >>
>> >>     Blake
>> >>
>> >>
>> >>
>> >>     On Wed, Apr 8, 2020 at 10:58 AM Dr. Jürgen Sauermann
>> >>     <mail@jürgen-sauermann.de <mailto:mail@j%C3%BCrgen-sauermann.de>>
>> >>     wrote:
>> >>
>> >>         Hi Blake,
>> >>
>> >>         thanks, hopefully fixed in *SVN 1256*.
>> >>
>> >>         Best Regards,
>> >>         Jürgen
>> >>
>> >>
>> >>
>> >>         On 4/8/20 4:18 PM, Blake McBride wrote:
>> >>>         Also, and further showing the point that the formatting is
>> >>>         occurring at the wrong place:
>> >>>
>> >>>               ⎕CR 'ABC'
>> >>>         ABC
>> >>>          x←4
>> >>>          EN1: Y←5
>> >>>          Z←7
>> >>>          ⍝ THIS IS A COMMENT
>> >>>          Z←5
>> >>>
>> >>>         Those space characters before each line should never happen
>> >>>         but does when the file is loaded from a .APL file.
>> >>>
>> >>>         Thanks!
>> >>>
>> >>>         Blake
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>         On Wed, Apr 8, 2020 at 8:56 AM Blake McBride
>> >>>         <blake1...@gmail.com <mailto:blake1...@gmail.com>> wrote:
>> >>>
>> >>>             Lastly, I should mention that the first display of ABC
>> >>>             is the correct one, and the one that matched IBM APL.
>> >>>
>> >>>             Thanks.
>> >>>
>> >>>             Blake
>> >>>
>> >>>
>> >>>             On Wed, Apr 8, 2020 at 8:46 AM Blake McBride
>> >>>             <blake1...@gmail.com <mailto:blake1...@gmail.com>> wrote:
>> >>>
>> >>>                 Greetings,
>> >>>
>> >>>                 Echoing some thoughts I've had on this subject,
>> >>>                 given the trouble we've had with function
>> >>>                 formatting over the years between the del editor
>> >>>                 and ⎕CR, I get the impression that function
>> >>>                 formatting is occurring at the wrong place.  I think
>> >>>                 internally functions should be stored left-justified
>> >>>                 always.  The del editor would then be the one adding
>> >>>                 the formatting for comments and labels.  This way
>> >>>                 there wouldn't be ongoing problems between the del
>> >>>                 editor, save, dump, and ⎕CR.
>> >>>
>> >>>                 Thanks.
>> >>>
>> >>>                 Blake
>> >>>
>> >>>                 On Wed, Apr 8, 2020 at 8:36 AM Blake McBride
>> >>>                 <blake1...@gmail.com <mailto:blake1...@gmail.com>>
>> >>>                 wrote:
>> >>>
>> >>>                     Greetings,
>> >>>
>> >>>                     Look at the formatting.  In particular look at
>> >>>                     how the lines with labels and comments are
>> >>>                     indented.  They are indented differently
>> >>>                     depending on whether the file is saved or dumped.
>> >>>
>> >>>                           ∇ABC[⎕]∇
>> >>>                         ∇
>> >>>                     [0]   ABC
>> >>>                     [1]   X←4
>> >>>                     [2]  EN1: Y←5
>> >>>                     [3]   Z←7
>> >>>                     [4]  ⍝ THIS IS A COMMENT
>> >>>                     [5]   Z←5
>> >>>                         ∇
>> >>>                           )save test
>> >>>                     2020-04-08  08:30:48 (GMT-5)
>> >>>                           )dump test
>> >>>                     2020-04-08  08:30:52 (GMT-5)
>> >>>                           )load test
>> >>>
>> >>>                     WARNING: filename /home/blake/workspaces/test
>> >>>                         is ambiguous because another file
>> >>>                         /home/blake/workspaces/test.apl
>> >>>                         exists as well. Using the first.
>> >>>
>> >>>                     SAVED 2020-04-08 08:30:48 (GMT-5)
>> >>>                           ∇ABC[⎕]∇
>> >>>                         ∇
>> >>>                     [0]   ABC
>> >>>                     [1]   X←4
>> >>>                     [2]  EN1: Y←5
>> >>>                     [3]   Z←7
>> >>>                     [4]  ⍝ THIS IS A COMMENT
>> >>>                     [5]   Z←5
>> >>>                         ∇
>> >>>                           )load test.apl
>> >>>                     DUMPED 2020-04-08  08:30:52 (GMT-5)
>> >>>                           ∇ABC[⎕]∇
>> >>>                         ∇
>> >>>                     [0]   ABC
>> >>>                     [1]    X←4
>> >>>                     [2]    EN1: Y←5
>> >>>                     [3]    Z←7
>> >>>                     [4]    ⍝ THIS IS A COMMENT
>> >>>                     [5]    Z←5
>> >>>                         ∇
>> >>>
>> >>>                     Thanks!
>> >>>
>> >>>                     Blake
>> >>>
>> >>
>> >
>>
>>
>

Reply via email to