I finally have a repair for my erroneous deb1 .  Watch for line wrap.  The
last string in deb1 is
'z  '  (a z followed by two spaces).

   deb1
2 }. [: (#~ ((' ' ~: {:) ,~ [: -. '  ' -:"1 }: ,. }.)) 'z  ' , ]
   < deb1 ' b  e g '
+-----+
|b e g|
+-----+

On Monday, July 14, 2014, Erling Hellenäs <[email protected]> wrote:

> Like this?
>
>    BetweenConsecutiveAM=: 1 : '[: u/ }. ,: }:'
>    nonBlankM=:' ' ~: ]
>    nonBlankOrFirstInBlankGroupM=:$ {. 1 , [: +.BetweenConsecutiveAM
> nonBlankM
>    DropLeadingBlankM=: (' ' = {.) }. ]
>    DropTrailingBlankM=: (_1 * ' ' = {:) }. ]
>    DropRedundantBlanksM=: [: DropLeadingBlankM [: DropTrailingBlankM
> nonBlankOrFirstInBlankGroupM # ]
>    a=:' ert t yyy yy '
>    DropRedundantBlanksM a
> ert t yyy yy
>
>
> /Erling
>
> On 2014-07-14 22:09, Erling Hellenäs wrote:
>
>> Typo. Excuse me. Like this.
>>  debm=:[: ((' ' = {.) }. ]) ([: (] +. $ {. ([: >bc ]), 0:) (' ' ~: ])) # ]
>> /Erling
>>
>> On 2014-07-14 21:10, Erling Hellenäs wrote:
>>
>>> Another version without & och @. Now even without f~. Skipping leading
>>> and trailing blanks.
>>>
>>>
>>> bc=: 1 : '[: u/ }. ,: }:'
>>>
>>> debm=:[: ((' ' = {.) }. ]) ([: (] +. $ {. ([: >.bc ]), 0:) (' ' ~: ])) #
>>> ]
>>>
>>> debm a
>>>
>>> ert t yyy yy
>>>
>>>
>>> /Erling
>>>
>>> On 2014-07-14 18:52, Ian Clark wrote:
>>>
>>>> Thanks @Raul. As you discreetly point out, I was wrong to suggest r0
>>>> and s0
>>>> could be eliminated by simply replacing left rotate |. by left shift
>>>>  |.!.0
>>>> The resulting verb:
>>>>
>>>> debXA=: monad define
>>>> ]Notspace=. (' ') ~: y
>>>> ]LeftshiftedNotspace=. 1 |.!.0 Notspace
>>>> or=. +.
>>>> ]Keep=. Notspace or LeftshiftedNotspace
>>>> ]Keep # y
>>>> )
>>>>
>>>> cannot remove a (residual) leading space.
>>>>
>>>> So LeftshiftedNotspace is strictly speaking misnamed.
>>>>
>>>>
>>>> On Mon, Jul 14, 2014 at 5:29 PM, Raul Miller <[email protected]>
>>>> wrote:
>>>>
>>>>  I'd probably call s0 "Firstchar" (its actually the first non-blank
>>>>> character but you have to allow a certain amount of ambiguity in naming
>>>>> conventions).
>>>>>
>>>>> I'd also probably call r0 "RelevantShadow" (since it's what's going to
>>>>> be
>>>>> rotated left to catch the non-extraneous spaces).
>>>>>
>>>>> Thanks,
>>>>>
>>>>> --
>>>>> Raul
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jul 14, 2014 at 12:25 PM, Ian Clark <[email protected]>
>>>>> wrote:
>>>>>
>>>>>  Thanks Linda. Yes, there is a better explicit version than:
>>>>>>     f=: 13 :'(#~[:(+. 1 |. (> </\)) '' ''~:])y'
>>>>>>
>>>>>> Addon: tte makes heavy weather of deb, but handles deb2 a lot better,
>>>>>> now
>>>>>> that you've replaced @ by a capped fork, since it breaks down the
>>>>>> tacit
>>>>>> phrase into intermediate pronouns only, avoiding intermediate
>>>>>> proverbs.
>>>>>> These work-pronouns can then be renamed meaningfully.
>>>>>>
>>>>>> Here's my "explication" (=deconstruction?) of your deb2 ...
>>>>>>
>>>>>>     require 'debug/tte'
>>>>>>     deb2 tte
>>>>>> 3 : 0
>>>>>>      NB. (deb2): #~ ([: (+. (1 |. (> </\))) ' ' ~: ])
>>>>>> ] t0=: (' ') ~: y    NB. fork: ' ' ~: ]
>>>>>> ] s0=: </\ t0    NB. main: h-: ,'\'
>>>>>> ] r0=: t0 > s0    NB. hook: > </\
>>>>>> ] q0=: 1 |. r0    NB. fork: 1 |. (> ((</)\))
>>>>>> ] p0=: t0 +. q0    NB. hook: +. (1 |. (> </\))
>>>>>>          NB. atco: (+. (1 |. (> </\)))@:(' ' ~: ])
>>>>>> ] z0=: p0 # y    NB. swap: #~
>>>>>>          NB. hook: #~ ([: (+. (1 |. (> </\))) ' ' ~: ])
>>>>>> :
>>>>>> NB. (dyad irrelevant, so I have omitted it here)
>>>>>> )
>>>>>>
>>>>>> Now all I have to do is set up a test value of y and re-execute lines
>>>>>> one-by-one ...
>>>>>>
>>>>>>     y=: ' able   baker  '
>>>>>> ] t0=: (' ') ~: y    NB. Notspace
>>>>>> 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0
>>>>>> ] s0=: </\ t0
>>>>>> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
>>>>>> ] r0=: t0 > s0
>>>>>> 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0
>>>>>> ] q0=: 1 |. r0    NB. LeftshiftedNotspace
>>>>>> 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0
>>>>>> ] p0=: t0 +. q0    NB. Notspace or LeftshiftedNotspace
>>>>>> 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0
>>>>>> ] z0=: p0 # y    NB. KeepOnes
>>>>>> able baker
>>>>>>
>>>>>> I've replaced the comments with suggested names on the basis of what
>>>>>> each
>>>>>> line appears to do. I haven't bothered with names for s0 and r0
>>>>>> because
>>>>>>
>>>>> the
>>>>>
>>>>>> 3 lines concerned seem to be an elaborate way of turning rotate-left
>>>>>> into
>>>>>> shift-left, which could have been done using (!.) as shown in
>>>>>> http://www.jsoftware.com/jwiki/Vocabulary/bardot#monadicfit
>>>>>>
>>>>>> This lets me rewrite (deb2 tte) as follows:
>>>>>>
>>>>>> debX=: monad define
>>>>>> Notspace=. (' ') ~: y
>>>>>> s0=. </\ Notspace
>>>>>> r0=. Notspace > s0
>>>>>> LeftshiftedNotspace=. 1 |. r0
>>>>>> or=. +.
>>>>>> Keep=. Notspace or LeftshiftedNotspace
>>>>>> Keep # y
>>>>>> )
>>>>>>
>>>>>> ... which is more in the spirit of
>>>>>> http://www.jsoftware.com/jwiki/Vocabulary/Unreadability .
>>>>>>
>>>>>> As you see, the above is a largely automatic procedure well within the
>>>>>> capability of a typical beginner.
>>>>>>
>>>>>> IanClark
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jul 14, 2014 at 7:18 AM, Linda Alvord <
>>>>>> [email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>  Here's deb without @  and  &
>>>>>>>
>>>>>>>      deb
>>>>>>> #~ (+. (1: |. (> </\)))@(' '&~:)
>>>>>>>     deb2
>>>>>>> #~ ([: (+. (1 |. (> </\))) ' ' ~: ])
>>>>>>>
>>>>>>> However it seems as though there should be a better explicit version
>>>>>>>
>>>>>> than:
>>>>>>
>>>>>>>     f=: 13 :'(#~[:(+. 1 |. (> </\)) '' ''~:])y'
>>>>>>>
>>>>>>> Linda
>>>>>>>
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: [email protected] [mailto:
>>>>>>> [email protected]] On Behalf Of Linda Alvord
>>>>>>> Sent: Sunday, July 13, 2014 11:43 PM
>>>>>>> To: [email protected]
>>>>>>> Subject: Re: [Jprogramming] Design goals readability and
>>>>>>> writeability?
>>>>>>>
>>>>>>> I enjoyed your article:
>>>>>>>
>>>>>>> <"1 toupper"0>"0;:'alpha beta gamma'
>>>>>>> ┌─────┬─────┬─────┐
>>>>>>> │ALPHA│BETA │GAMMA│
>>>>>>> └─────┴─────┴─────┘
>>>>>>>
>>>>>>> Linda
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: [email protected] [mailto:
>>>>>>> [email protected]] On Behalf Of Ian Clark
>>>>>>> Sent: Sunday, July 13, 2014 9:40 PM
>>>>>>> To: [email protected]
>>>>>>> Subject: Re: [Jprogramming] Design goals readability and
>>>>>>> writeability?
>>>>>>>
>>>>>>> "The alleged unreadability of J - and what to do about it"
>>>>>>> http://www.jsoftware.com/jwiki/Vocabulary/Unreadability
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Jul 13, 2014 at 11:43 PM, Don Kelly <[email protected]> wrote:
>>>>>>>
>>>>>>>  Absolutely!!
>>>>>>>> J suffers from the same problem as its precurser APL- in spades..
>>>>>>>> One
>>>>>>>>
>>>>>>> can
>>>>>>
>>>>>>> write very terse code because of its power. Often, 6 moths later the
>>>>>>>> original writer has to spend time interpreting what was written. I
>>>>>>>>
>>>>>>> have
>>>>>
>>>>>> come up with some terse code and , more often terse code from others-
>>>>>>>>
>>>>>>> all
>>>>>>
>>>>>>> of which has been put in a utility script wrapped in  comments so
>>>>>>>>
>>>>>>> that
>>>>>
>>>>>> when
>>>>>>>
>>>>>>>> I want to use it-I do have such guidance. This is something one has
>>>>>>>>
>>>>>>> to
>>>>>
>>>>>> do
>>>>>>
>>>>>>> to a great extent with any programming language. It is even more
>>>>>>>>
>>>>>>> important
>>>>>>>
>>>>>>>> with J tacit.
>>>>>>>>
>>>>>>>> Don Kelly
>>>>>>>>
>>>>>>>>
>>>>>>>> On 12/07/2014 11:44 AM, Don Guinn wrote:
>>>>>>>>
>>>>>>>>  Readability depends on a person's background. I can't read Chinese.
>>>>>>>>>
>>>>>>>> Does
>>>>>>
>>>>>>> that mean it's not a readable language?
>>>>>>>>>
>>>>>>>>> When writing a program or a document one must assume some level of
>>>>>>>>> knowledge of the reader. J tends to assume readers have a greater
>>>>>>>>> knowledge
>>>>>>>>> of mathematics than most other programming languages require.
>>>>>>>>>
>>>>>>>>> But readability is a real problem. What is usually missing from
>>>>>>>>> many
>>>>>>>>> programs, especially J tacit, is the intent of something. Say I see
>>>>>>>>> something like this:
>>>>>>>>>
>>>>>>>>>      < @ (({. + i.@{:)@[ { ] )
>>>>>>>>>
>>>>>>>>> It would certainly help to have some idea what this is supposed to
>>>>>>>>>
>>>>>>>> do.
>>>>>
>>>>>> What
>>>>>>>>> its arguments are and what it returns. Documentation really helps.
>>>>>>>>>
>>>>>>>>> But J expressions can be intimidating. It has always bothered me
>>>>>>>>>
>>>>>>>> that
>>>>>
>>>>>> I
>>>>>>
>>>>>>> could attack a FORTRAN program spanning several pages comfortably.
>>>>>>>>>
>>>>>>>> But
>>>>>
>>>>>> a J
>>>>>>>
>>>>>>>> program of just a few lines which do exactly the same thing is hard
>>>>>>>>>
>>>>>>>> for
>>>>>>
>>>>>>> me
>>>>>>>
>>>>>>>> to get into.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sat, Jul 12, 2014 at 12:23 PM, Erling Hellenäs <
>>>>>>>>> [email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>   Hi all !
>>>>>>>>>
>>>>>>>>>> Yes, maybe we should all be concerned about writing readable code
>>>>>>>>>>
>>>>>>>>> instead
>>>>>>>
>>>>>>>> of the shortest and most cryptic code? Maybe we should also write
>>>>>>>>>> writeable
>>>>>>>>>> code? Find a way to write that allows us to get the expressions
>>>>>>>>>>
>>>>>>>>> right
>>>>>
>>>>>> the
>>>>>>>
>>>>>>>> first time?
>>>>>>>>>> J is more of a notation than a language? The value of a notation
>>>>>>>>>> is
>>>>>>>>>> determined by clarity, but also readability? Maybe readability and
>>>>>>>>>> writeability, in the sense I explained above, should get higher
>>>>>>>>>>
>>>>>>>>> priority
>>>>>>>
>>>>>>>> as
>>>>>>>>>> design goals for our future J?
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>>
>>>>>>>>>> Erling Hellenäs
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 2014-07-12 07:40, Raul Miller wrote:
>>>>>>>>>>
>>>>>>>>>>   I would not generalize to higher rank arrays without a model of
>>>>>>>>>>
>>>>>>>>> why
>>>>>
>>>>>> I'd
>>>>>>>
>>>>>>>> be
>>>>>>>>>>> using them.
>>>>>>>>>>>
>>>>>>>>>>> In other words, v=: {"_1 |:~&0 2 is probably good enough.
>>>>>>>>>>>
>>>>>>>>>>> There are some interesting contradictions here - while one needs
>>>>>>>>>>>
>>>>>>>>>> to
>>>>>
>>>>>> be
>>>>>>
>>>>>>> comfortable thinking mathematically to get decent performance out
>>>>>>>>>>>
>>>>>>>>>> of a
>>>>>>
>>>>>>> system, usually what we are building is a mix of instant and
>>>>>>>>>>>
>>>>>>>>>> delayed
>>>>>
>>>>>> gratification and we usually assume our audience has no direct
>>>>>>>>>>>
>>>>>>>>>> interest
>>>>>>>
>>>>>>>> in
>>>>>>>>>>> the math we are performing (indirect interest, yes - sometimes).
>>>>>>>>>>>
>>>>>>>>>>> Often I think we go overboard, and we should throw back in some
>>>>>>>>>>>
>>>>>>>>>> exposure
>>>>>>>
>>>>>>>> to
>>>>>>>>>>> some of the more robust concepts (especially for the kids, so
>>>>>>>>>>> they
>>>>>>>>>>>
>>>>>>>>>> have
>>>>>>>
>>>>>>>> something interesting to play with). But professional adults tend
>>>>>>>>>>>
>>>>>>>>>> to
>>>>>
>>>>>> be
>>>>>>>
>>>>>>>> under a lot of time pressure, and as a result their needs often
>>>>>>>>>>>
>>>>>>>>>> seem
>>>>>
>>>>>> to
>>>>>>>
>>>>>>>> be
>>>>>>>>>>> a mix of the very basic and the childish.
>>>>>>>>>>>
>>>>>>>>>>> Meanwhile, it seems like anything worthwhile takes time and
>>>>>>>>>>>
>>>>>>>>>> effort.
>>>>>
>>>>>> Anyways, professional software design often centers around use
>>>>>>>>>>>
>>>>>>>>>> cases
>>>>>
>>>>>> and
>>>>>>>
>>>>>>>> similar models which are aimed at extracting the important
>>>>>>>>>>>
>>>>>>>>>> concepts
>>>>>
>>>>>> about
>>>>>>>>>>> what people need to get done and how they want to work. And that
>>>>>>>>>>>
>>>>>>>>>> kind
>>>>>>
>>>>>>> of
>>>>>>>
>>>>>>>> information is what you need if you are going to properly
>>>>>>>>>>>
>>>>>>>>>> generalize
>>>>>
>>>>>> application code.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  
>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>>> 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



-- 
Sent from Gmail Mobile
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to