Also, the x and y in explicit definitions are local names so are unique from x and y of a calling explicit definition. That includes recursion.
On Mon, Feb 11, 2013 at 6:31 AM, km <[email protected]> wrote: > Perhaps this Vocabulary entry for Memo M. will help > > http://www.jsoftware.com/docs/help701/dictionary/dmcapdot.htm > > There is also Self Reference $: > > http://www.jsoftware.com/docs/help701/dictionary/dmcapdot.htm > > Kip Murray > > Sent from my iPad > > > On Feb 11, 2013, at 7:04 AM, Alex Giannakopoulos <[email protected]> > wrote: > > > Are there any resources on recursive programming in J? Couldn't find > much > > by searching. > > I would particularly like to know about scoping, and also so-called free > > variables. > > > > It seems to me that the enforced naming of variables as 'x' and 'y' might > > cause problems in nested functions, necessitating awkward renaming and > > copying. > > > > I will give a little example here (my apologies to those unfamiliar with > > Scheme.) > > I am trying to write a routine that will return ALL the factors of a > > number, not just the prime ones. > > I do this by using an auxiliary routine that takes the number to factor > and > > a list of numbers still to combine. > > > > ;; function (unique numlist) corresponds to J's ~. > > ;; function (remel alist elem) corresponds to J's [ }.~ [: >: i. > > ;; function (primefactors n) corresponds to J's q: > > > > (define (allfactors n) (af n (primefators n)) > > > > (define (af num divisors) > > (if (null? divisors) (list num) > > (let ((uniquefactors (unique divisors))) > > (flatten > > (cons num > > (map (lambda(x) (af (/ num x) (remel divisors x))) > > uniquefactors)))))) > > > > Now I tried to express this in J, but can't even get to first base, > because > > of the scoping problems I mentioned. > > I realise that recursion is not the primary mode for programming J, and a > > good solution may instead use something like running totals (\), but for > > the time being I am stuck. > > Any suggestions gratefully received. > > ---------------------------------------------------------------------- > > 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
