m : '...' to {...} is like
(x1;x2;...) { y to y[x1;x2;...]
{...} in APL is another special syntax,
whereas J tries to be functional.
However, if indexing in J maintains the scope (a variable
from outer scope can be used to construct expression x1),
the explicit definition introduces totally different
and disconnected scope. And that is another ugly bit.
I don't know if they do it in APL for {...}, but
it could allow for naturally supporting such things
as closures.
> From: Viktor Cerovski <[email protected]>
>
> To me the main problem with explicit definitions is that
> they are always first and foremost strings (or as it is often said,
> scripts).
>
> Tacit expressions are more alive: as soon as you define one,
> it gets evaluated and you get something back that is valid,
> From: Roger Hui <[email protected]>
>
> Dyalog APL did not assign function (and operator) meanings
> to { and }. Instead, you can do the equivalent of
>
> length=: {%:+/*:y}
>
> To do the same in J we'd need (at the very least)
> to find a pair of "enclosing" symbols. To get rid of
> the quotes we'd need something stronger. (Special
> parser rules.)
> From: Andrew Nikitin <[email protected]>
>
> I think the reason that so many people dislike explicit definitions is
> because
> they are syntactically ugly. Multiline is only mildly ugly, but single line
> is > freak. Come on,
>
> length=:3 : '%: +/ *: y' ?
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm