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

Reply via email to