Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!sdd.hp.com!hplabs!otter.hpl.hp.com!hpltoad!cdollin!kers From: kers@hplb.hpl.hp.com (Chris Dollin) Newsgroups: comp.lang.misc Subject: Re: Re^4: Closures (was Re: class-sic.) Message-ID: Date: 25 Jan 91 09:38:05 GMT References: <20058@yunexus.YorkU.CA> <27942:Jan902:20:0791@kramden.acf.nyu.edu> <27770.278aef90@kuhub.cc.ukans.edu> <22345:Jan1021:30:4591@ Sender: news@hplb.hpl.hp.com (Usenet News Administrator) Organization: Hewlett-Packard Laboratories, Bristol, UK. Lines: 37 In-Reply-To: kend@data.UUCP's message of 23 Jan 91 16:51:57 GMT Nntp-Posting-Host: cdollin.hpl.hp.com Ken Dickey writes (following up on my earlier posting): >Ken (and others) seem to have fallen into the accidental terminological trap >that Lawrence has set. In Pop, the term "closure" has traditionally meant a >procedure created by partially applying some given to procedure to some >collection of arguments. I must clain ignorance of Pop, but in common usage [e.g. see (1), (2), (3)], a closure is called such because it captures free variables by "closing over" the environment at time of creation. This differs from currying [see (1), (3)] which seems to be what you mean by "closure". Again, my viewpoint comes from literature in lambda calculus and denotational semantics. Are there references in the general literature which support your definition? I'm sorry, I didn't make myself clear. When I said "In Pop, the term ... " I meant "in the existing Pop[2..11] communities" that the term closure has been used that way. It is an idiosyncatic use, it is not the way the term is used in other programming languages (in particular, Lisp), and it is indeed like currying [*1]. I had intended to avoid confusion by pointing out that Lawrence (who appears to be a Pop programmer or to have been exposed to it at some point) was using "closure" in a sense different to most other readers of c.l.m. I'm sorry to have caused any confusion myself .... [*1] Apart from the fact that Pop closures have to be explicit (ie, making a closure is syntactically different from applying the function - in fact it is implemented by calling the system function "consclosure" with the function to be closed and the arguments to be frozen in) and currying works left-to-right, Pop partial applications working right-to-left. -- Regards, Kers. | "You're better off not dreaming of the things to come; Caravan: | Dreams are always ending far too soon."