Here the scientific view. It's an old mail which got "lost" when I did
Reply-to-list. It does not fit perfectly in this discussion.
Passive and Reflexive (~) are of course also used to get the right
argument to the right function, giving even more complex ways to express
the most simple thing.
That constants and even string constants have to be considered as
constant functions is also very peculiar, I think. That this is covered
up by in some cases writing them as normal constants makes it even more
peculiar.
This adds to the total messiness of tacit J, at least in my eyes.
We removed not only the name of data types/variables but also all
references to them, except for Left and Right which are references to
noun arguments. Still these same data types still exist and most often
are the real arguments. Functions still are not primary citizens of the
language. Tacit expressions can be function argument to built in adverbs
and conjunctions. There is a macro-like way in which "adverbs" and
"conjunctions" can be defined by the user but where macro expansion
takes them away before execution.
Well, and data does not have a type in J, so data in tacit J has most
often neither a name, nor a type nor any reference to it whatsoever. It
is something the reader by rational thought has to construct in his mind
when he tries to analyze expressions.
Here we can read about how efficient humans are at rational thought:
- Cognitive Miser. http://tinyurl.com/h5e8aym<https://t.co/ug1YbAdZIK>
- How many objects can you hold in mind simultaneously?
<https://t.co/tOfF8fsfvT>http://tinyurl.com/hr37f59
There is a science called Cognition which describes human cognitive
capabilities in detail.
To be able to read something like this we have to remember sequences and
patterns and what they do. When we express the same thing in many ways
this gets very difficult. Like if you have hundreds of words for every
concept. When we fail we have to resort to rational thought, which in
the best case is very slow, often fails and often is far over the
capacity of the individual. Or we have to debug the expressions at a
terminal, which is even slower.
/Erling
On 2016-08-03 17:04, Erling Hellenäs wrote:
See comments below.
On 2016-08-03 15:47, Marc Simpson wrote:
On Wed, Aug 3, 2016 at 1:21 AM, Erling Hellenäs
<[email protected]> wrote:
My article contains some points supposed to show that the tacit J
syntax is
a "total mess of utter complexity".
This is the crux of the discussion, I think. It's one thing to argue
that tacit expressions can be confusing as they involve rewriting
equivalent explicit phrases (which is a fair point), it's another to
then ignore their utility and expressiveness in a dismissive way (both
here and in your article).
The reason is simply that I didn't find any significant advantages of
the tacit J notation compared to the modified explicit J notation. If
I knew of any such significant advantage I would have included it.
The tacit J notation gives some support for the imagination when you
do math work with functions. I did not consider this a significant
advantage.
I think I have understood the tacit J notation. There is another
article where I describe this:
https://erlhelinfotech.wordpress.com/2016/05/30/j-a-functional-language/
If there is any such significant advantage, please tell.
Put differently: it's great to see your work in this area (thanks for
sharing) but the tone strikes me as problematic if you're actually
looking to invite constructive comments.
I can appreciate your focusing on regular parsing rules (as per K, Q
and Dyalog d-fns) but stating things like "The tacit J syntax is a
total mess of utter complexity" just seems lazy. Further, as Raul
points out, [: – [: – [: – [: – ] is a rather boring example (and yes,
a strawman). To me this scans as:
"Hey, look how terrible Your Favourite Language L is, where to raise
something to the power of 5 you have to do: X * X * X * X * X"
never mind that there's an exponentiation operator; move along, move
along.
Maybe we can discuss facts and allow me to have the feelings I have
and express them?
I started working with APL 1979. I have been hanging out in the J
forum for years. Now I spent 2 months writing a different J. Believe
me, I am not your enemy, I only have a strong will to change things
for the better.
I once wrote down all combinations of two and three verbs which are
commonly used. It was a lot. I guess there is between 50 and 100
different ways to get the right argument to the right function in a
hook and a fork.
I will add a more scientific view to this point in some hours.
More constructively: See Roger's comments on whether J should have
provided a hook conjunction rather than the train syntax we have now;
to me, that's a more interesting discussion and touches on some of
your criticisms of length, arity, etc.
Can you provide a link?
Personally I think forks are one of the most important ideas in J.
I describe the fork in a different way in my article than how it is
normally described. I describe one of the differences between explicit
and tacit J as taking away the default composition operation between
two verbs. Any opinions about this description?
----------------------------------------------------------------------
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