On Thu, Apr 30, 2009 at 3:57 PM, Don Watson <[email protected]> wrote: > sd=: 4 : '%: (%<:#y) * +/ *: y -(+/y)%#y' > > but the student is going to ask why we put it in quotes when the > rest of Mathematics isn't in quotes and doesn't write 4: in the front. > Seemingly little barriers can actually be big barriers.
sd=: verb def '%: (%<:#y) * +/ *: y -(+/y)%#y' It's in quotes because we do not want to use the expression right now, we want to define a new verb which uses the expression. Computers do not understand our intentions so we must spell out everything precisely. > A couple of days ago I realised that in trying to find something easier > for the academic community, I was making things more complex than they > needed to be. I could simply take any explicit J expression, replace all > "x"s with "[" and all "y"s with "]" and I had something that fulfilled the > definition of tacit J: "In a tacit definition the arguments are not named > and do not appear explicitly in the definition. The arguments are referred > to implicitly by the syntactic requirements of the definition." For this to work consistently, [ and ] would have to be names rather than verbs. Which means that this would not be a tacit definition. In simple cases, this will work with J's existing rules, but in the general case things are not so simple. (Because, computers need everything specified unambiguously.) > tacit J. For example, take the expression: > > x f...@g y <-> f (x g y) > > that you have given above. In explicit J this is still: f (x g y) > and could be expressed in a right to left implicit form as: f ([ g ]) Again, for this to work, [ and ] have to be names and this has to be an explicit expression and not a tacit expression. That you spelled the names with non-alphabetic characters means nothing to a computer -- computers need unambiguous rules if they are to be able to do anything. -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
