Hello Dan;
As my proposed solution to the original problem was to add a & and an
each, the facilities of 8!:0 over 8!:2 were not apparent to me. I'll
presume theres a time or space efficiency to be gained by adding a
control parameter.
A good explanation for my original question is: dyadic use of (f g h &
]) allows the right verb in the fork to ignore the fork's left argument.
(Now, where in the manual one could put that statement, I don't know.)
Dan Bron wrote:
Randy wrote:
Is your definition of ts, which seems to ignore the left argument when
used dyadically, useful for some other purpose which I don't happen to see?
The definition of ts works both monadically and dyadically. The verbs give
(respectively) measurements of time and space consumed by the J sentence that
is its right argument. Mondically, ts executes the sentence y once and
reports the time and space consumed. Dyadically, it executes the sentence x
times and reports the average time and space used per execution. That is, ts
y is shorthand for 1 ts y .
Your analysis is partially correct and partially incorrect. You are incorrect that the dyad ts ignores its left argument. You are correct that part of the definition of ts relies only on the right argument. Specifically, the result of 6!:2 depends on both arguments, but 7!:2@:] ignores the left argument (I don't know why the definition was given with &] instead of @:] ).
This is because 6!:2 has a dyadic definition, but 7!:2 does not. That is,
x 6!:2 y executes y (the J sentence) x times, and reports the average
execution time, but x 7!:2 y has no definition (makes no sense; is an error).
I do not know the rationale behind this difference, but I speculate that the
space consumed by an expression is more or less fixed, whereas the time is
subject to the vagaries of operating system, task scheduling, CPU pipelining,
etc.
I do not agree with your earlier lottery analogy, and this is a good example of
why not. If you'd looked up 6!:2 and 7!:2 you would know what the dyad ts
would do. That is, if you (can read J well enough to) know that the expression
x (f g h@:]) y will yield (x f y) h g y (and that x ts y is an instance
of such an expression). But, even if you didn't, and you read the definitions
of 6!:2 and 7!:2 , the fact that 6!:2 has a dyadic definition but 7!:2
does not would lead you to suspect the truth (or at least lead you to
investigate further). By the way, a version of ts that really would ignore
its left argument would be ts =: (6!:2 , 7!:2)@:] .
The thread to which you posted the lottery analogy provided another counterexample to it. Alex was using 8!:2 . That verb is documented on the 8!:n page, along with 8!:0 and 8!:1 . The only difference between these verbs, and the only reason for having three instead of one, are their respective ranks and the style by which they box their results (as described on the page in question). The only issue Alex had using 8!:2 was its rank and the style by which it boxed its result.
When looking for more effective ways to use a verb, or in trying to resolve
issues encountered with a verb's use, it is reasonable to read the page
dedicated to that verb. In this case, I would have read the page dedicated to
describing 8!:n (where 8!:2 is documented) and in doing so I would have
encountered 8!:0 , which provides exactly the results desired. I would not,
for example, have opened the Vocabulary page and randomly selected a primitive
to read about (e.g. \. ). So your lottery analogy doesn't apply.*
-Dan
PS: * Unless lotteries are fixed. But I wouldn't be surprised if this were
true, given the stakes.
PPS: In x 6!:2 y I assumed x would be constrained to the positive
integers. But I tried 0 (with the expected result) and negative numbers
(with unexpected results).
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
--
------------------------------------------------------------------------
|\/| Randy A MacDonald | APL: If you can say it, it's done.. (ram)
|/\| ramacd <at> nbnet.nb.ca |
|\ | | The only real problem with APL is that
BSc(Math) UNBF'83 | it is "still ahead of its time."
Sapere Aude | - Morten Kromberg
Natural Born APL'er |
-----------------------------------------------------(INTP)----{ gnat }-
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm