There are formal definitions of substitutability. These do not apply to
real-world concepts (such as feet) but absolutely apply to formal
languages.
Language semantics are distinct from implementation details. APL has
traditionally resisted standardization and, well, APL2 was a collossal
failure. It is a shame, IMO.
It is a completely different thing to say 'JE 9.03 executes "y" before "x"
in "x f y"' and 'in the language implemented by JE 9.03, "y" must be
executed before "x" in "x f y"'. I find the latter much more interesting
than the former, because it is a statement of _intent_: which of x and y
_should_ JE execute first? I am not JE; how should _I_ interpret a
sentence such as 'x f y'?
-E
On Sat, 22 Jan 2022, Raul Miller wrote:
Hmm...
First a tiny bit of philosophy, then a bit of my perspective:
Equivalencies, generally speaking, carry assumptions about relevant
abstractions.
For example, when we are counting, we are counting things which are
the "same", but for them to be counted we require them to be different
in some fashion.. 1 foot is not equivalent to 1 foot if they have
different locations. That sort of thing.
Philosophy aside, details matter, and these sorts of specifics are
worth documenting somewhere. In most contexts these kinds of details
are noise. And, this kind of thing tends to be version specific.
Still, it might be worth constructing some experiments and documenting
the results of those experiments?
Thanks,
--
Raul
On Sat, Jan 22, 2022 at 3:00 AM Elijah Stone <[email protected]> wrote:
It has been pointed out (f g h) y is not strictly equivalent to (f y) g (h y)
because it is not guaranteed that the right and left tines of a fork will
be applied in sequence. See also the recent thread 'can i trust `:0 to
always execute left to right?'
Does the same caveat apply to & and &: (and &. and &.:)?
The dictionary incorrectly claims that x u&v y ←→ (v x) u (v y). NuVoc
mentions this, but only points out the rank discrepancy (and NuVoc takes
pedagogic liberties anyway). Other NuVoc pages (including those for &.
and &.:) are silent regarding evaluation order. The dictionary says of &.
the same incorrect thing it says of &.
It would be good to have documentation somewhere making explicit which
guarantees are provided regarding evaluation order (and which are not).
'(f g h) y ←→ (f y) g (h y)' was quietly scrubbed from early editions of
the dictionary (so I hear), but the motivation for preferring the
diagrammatic definitions was not included. And `:'s NuVoc page still does
not mention that evaluation order for `:0 is not guaranteed, even though
this _has_ caused confusion (e.g. forum thread referenced earlier).
-E
----------------------------------------------------------------------
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