There is a lot more to tacit programming than hooks and forks. +/ is a tacit expression. As Raul mentioned, the fork is simply the mathematical expression (A + B)(x). Operators or functions (whatever they are) like - are not just monadic or dyadic. Even in standard math, one has to look at their position in an expression to determine whether it is monadic or dyadic. Mathematical notation was not formally defined. It grew like Topsy. It has many inconsistencies which Iverson addressed with his "Notation as a Tool for Thought". Restricting a notation to a line and ASCII characters removes a lot of the "prettyness" from the notation. Something about putting things above and below the line just looks better. It's tough to come up with decent looking glyphs using only ASCII.
I get lost looking at a lot of mathematical notation. It's squiggles and bars all around symbols and Greek letters all over the place sure looks pretty, but I just can't read a lot of it. Why? First, because I haven't read all the background material. Each writer makes his own extensions to standard mathematical notation. Takes a while to learn what all his squiggles mean. Reading math is tough. It takes practice. We've years of practice starting in the first grade or before. Like spoken language we learn its peculiarities and soon they look natural to us. But this concern for "inconsistencies" is tacit expressions is a lot like worrying about Markov notation for a beginning algebra student. Just stay away from it. It's not an issue at that level. We all get hung up liking something best. My first work processor was Word Perfect. There will never be a better word processor. Try telling that to a Word Star bigot. Tacit expressions are different, but they are a notation which greatly expands what can be expressed mathematically. Many things difficult or clumsy in standard mathematical notation become easy and clear. Some become clumsy and require @ and other conjunctions to specify how arguments are to be applied. I like to think of these like UNIX pipes. Everybody loves pipes and have no problem reading UNIX command lines with them. The first time I saw a tacit expression I couldn't understand it at all! Then, after many weeks as I didn't need tacit expressions based on my experience at that time, I saw it. The fork was what was completely clear and pretty as when a math teacher put it on the board (A + B)(x) <-> A(x) + B(x) From there I gradually expanded my understanding of tacit expressions. But many times I have to mentally convert them to non-tacit as that is most comfortable for me. Just because I have been reading that for over 50 years. Tacit for just a few. 2009/4/25 Björn Helgason <[email protected]> > If you want J to work very simply you can use it strictly as monadic. > > For a beginner that is probably enough. > > In a user written verb you can pass (y) into the verb that has two parts > like (x;y) and split them up into x and why inside the verb before > use. > > Then you rules to follow is very simple. > > 2009/4/25 Don Watson <[email protected]> > > > _____________________________________________________ > > > > EXPLICIT J > > > > In explicit J, a monadic verb takes an argument from its right, > > transforms it and passes it to its left: > > > > <-----------Monadic verb<--------------- > > > > So in a stream of monadic verbs, execution proceeds through each > monadic > > verb in turn: > > > > <-- Monadic verb <-- Monadic verb <-- Monadic verb <--Monadic verb<-- > > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
