I checked IBM APL2.  They do what I am suggesting.  See the attached
screenshot.

--blake

On Thu, Apr 9, 2020 at 2:59 PM Blake McBride <blake1...@gmail.com> wrote:

> Your example doesn't follow my rules.  I comment below in blue.
>
> On Thu, Apr 9, 2020 at 11:55 AM Dr. Jürgen Sauermann <
> mail@jürgen-sauermann.de> wrote:
>
>> Hi Blake,
>>
>> a simple example is this (written without testing since your algorithm is
>> not yet implemented).
>>
>> *)CLEAR*
>>
>> *∇FOO*
>> *[1] 1*
>> *[2]  *
>> *2 **[3]*
>> *   3 *
>>
>> *∇ *
>>
>
> Rule #2 forces all lines (from the previous function creation) to be
> left-justified meaning that the display of the function (following this
> line) would instead look like the last listing of this function you show.
> e.g. they're all left justified and appear to be indented the same.  See
> additional example further down.
>
>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *∇FOO[⎕] [1] 1 [2]  2 [3]   3 ∇ )SAVE foo )CLEAR )LOAD foo *
>> *∇FOO[⎕]*
>> *[1] 1*
>> *[2] *
>> *2 **[3]*
>> * 3 *
>> *∇*
>>
>
> Here is what it would look like following my rules:
>
> *)CLEAR*
>
> *∇FOO*
> *[1] 1*
> *[2]  *
> *2**[3]*
> *   3*
>
> *∇*
>
>
>
>
> *∇FOO[⎕][1] 1[2] 2[3] 3∇*
>
>
>
>>
>> The file *foo.xm**l* (same for *foo.apl*) still contains the indented
>> version of function *FOO*.
>>
>> However, *)LOAD* foo creates a new instace (i.e. internal version) of
>> *FOO* which is, according to
>> your algorithm NOT indented. Therefore the indentation is lost.
>>
>> Best regards,
>> Jürgen
>>
>>
>> On 4/9/20 5:57 PM, Blake McBride wrote:
>>
>> 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