It's interesting to note how J includes a fair bit of redundancy

For example, we have - but we also have <: (which is -&1) and we have
-. (which is 1&-). Why do we have these?

Primarily, for educational contexts. It can be useful when teaching
people to have specific words for commonly used operations.

The underlying principle here, I think, is one of giving people
multiple perspectives when relaying a concept. I think the hope is
that at least some of it will "stick".

But, also, for example, using -. for logical negation segues easily
into bayesian probability. There, we do not simply have 1 and 0 for
true and false, but we have a whole range of probabilities in between.
We can keep using -. for logical negation (it becomes the probability
of the event NOT happening), but we have to switch from *. to * for
combing events.

If A and B are independent probability variables then A*B is the
probability that both are true. Similarly, if A and B are logical
variables, then A*B is true if and only if both A and B are true. We
can use * for logical AND. But the corresponding OR statement would be
*&.-.

And J does not define that "bayesian OR" as a primitive, perhaps in
part to emphasize the need for understanding its derivation, perhaps
in part because it's only 5 characters already to get the
implementation and perhaps in part to emphasize the divide between
probability and logic.

Anyways, without -. we would instead need *&.(1&-) which is just a bit
more unwieldy (but which, ok, would still work).

Food for thought, perhaps...

Thanks,

-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to