I've been putting some attention to "lifting," starting with lambda lifting. This is another concept that seems to get a good deal of attention in functional-programming circles, except when Iverson languages such as J are in mind. It looks to me like array-support covers much of what lifting is designed to accomplish.
For example, the Wikipedia article on this topic http://en.wikipedia.org/wiki/Lambda_lifting contains an OCaml example where the same result can be written in J as +/i.101 (My natural reaction to that example is "Wow, I sure prefer putting that in seven characters, rather than all that manipulation." But I figure there's something here for me to learn, so I try to turn my mind away from notation and toward the concepts.) >From the comparison between the OCaml and the J I might conclude that J provides transparent lambda lifting. My guess, however, is that such a claim would be inaccurate because lambda lifting involves producing recursive equations. (With J there is no indication that recursive equations are involved when we rely on array notation; instead, the means by which results are produced is a black box.) Would it be better to say that J provides an alternative to lambda lifting? If so, can we characterize that alternative in terms that will be readily understood by those who care about lambda lifting? This topic ties in with the larger questions of how best to understand the relationship between J constructions and lambda calculus/closures. To my knowledge there are no texts that take those matters on in a formal manner. I'd be interested in references to any that do exist. Tracy ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
