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
