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

Reply via email to