This thread has got me re-reading NuVoc page "dollarco" with a jaundiced eye
https://code.jsoftware.com/wiki/Vocabulary/dollarco

This entire page has problems. It is opaque, unhelpful, misleading, overly
terse, logically unsound, uses the passive voice and present participles
(which can only confuse readers whose first language is not English), uses
j-argon, and the sort of mystification beloved of medics and Victorian
savants. Its choice of examples is infelicitous. Its device of underlining
parts of sample code using html tags corrupts the code to give Spelling
Error when you try to explore previous drafts of the page. (It lapses into
the old MoinMoin convention – wasn't it? – of underlining by using "__" as
terminators).

When I tried to discover via "View History" the original author of such
drivel — I found it was *me!!*

Eleven years on, I can hardly make head or tail of what I was trying to
say. I must have been having a bad day. Was it Mark Twain who said "demned
easy reading is demned hard writing"? If so, this page is a rogues' gallery
of what he was on about.

But its worst sin is totally sidestepping the big issue: defining the monad
in terms of the dyad, or vice-versa, inside an explicit definition. This is
an elephant trap we've all fallen into.

Example:
   foo =: 3 : 0
0 foo y
:
x < y
)
   3 foo 7
1
   3 foo _7
0
   foo 7
1
   foo _7
0

This is such a common idiom in published code (see the definition of
stdlib: load) you'd be forgiven for thinking it's the right way to do it.
But if you modify this code to make your own version of foo
   baa =: 3 : 0
0 foo y
:
x < y
)
…it's easy to miss the fact it calls itself using its original name. Maybe
not in such a short example, but in longer code it's an upturned rake in
the grass.

Wouldn't it be good if you'd used $: in place of: foo in the first place.
Trouble is: that doesn't work.

The challenge is to explain precisely why not. In babytalk, please, not
j-argon, or Gilbertian English. And the NuVoc page "dollarco" is the place
to do it.

In a week I'll have a stab at it myself, if no one has beaten me to it. But
I'll be surprised if someone else can't make a better job of it than I can,
in my grey hairs.

Ian Clark


On Fri, 19 May 2023 at 14:51, Henry Rich <henryhr...@gmail.com> wrote:

> See item 1 under 'Common Uses' in
> https://code.jsoftware.com/wiki/Vocabulary/dollarco
>
> Henry Rich
>
> On 5/19/2023 9:44 AM, 'Rob B' via Programming wrote:
> > Apologies I thought I had already sent this message but it got lost….
> >
> > Thanks Henry, nuvoc $: does say 'tacit' but I missed that, doh.
> >
> > Is there any way to achieve what I was trying to do, ie define the dyad
> in terms of the monad?
> >
> > I am on iPadOS 15.
> > J701 gives stack error but J903 crashes.
> >
> > Thanks, Rob.
> >
> >
> >> On 15 May 2023, at 13:49, Henry Rich <henryhr...@gmail.com> wrote:
> >> Yes.  $: applies only to tacit programs or tacit components of
> sentences.
> >>
> >> The simplest way to get a stack error is
> >>
> >> $: 0
> >>
> >> (but if you can make it crash in 9.4 or later, please report how you
> did it and what your JVERSION is)
> >>
> >> $: means 'execute the verb phrase I was contained in'.  $: by itself
> means 'execute myself' with nothing to stop the recursion.
> >>
> >> $: is difficult to define in words.
> https://code.jsoftware.com/wiki/Vocabulary/dollarco under More
> Information is the best I can do.
> >>
> >> Henry Rich
> >>
> >> On 5/15/2023 8:36 AM, Brian Schott wrote:
> >>> Reading in Nuvoc I see the following comment. Perhaps, it pertains.
> >>> 3. In no case does $: refer to a larger unit than the sentence it
> appears
> >>> in, for example an explicit definition in which it appears.
> >>> ----------------------------------------------------------------------
> >>> 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