<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.lostechies.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Bytes of Wisdom - All Comments</title><link>http://www.lostechies.com/blogs/joshua_lockwood/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4845</link><pubDate>Sat, 06 Sep 2008 08:51:35 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4845</guid><dc:creator>foo</dc:creator><description>&lt;p&gt;joshua:&lt;/p&gt;
&lt;p&gt;EVERY is a function in Common Lisp, see here:&lt;/p&gt;
&lt;p&gt; &amp;nbsp;&lt;a rel="nofollow" target="_new" href="http://www.lispworks.com/documentation/HyperSpec/Body/f_everyc.htm"&gt;www.lispworks.com/.../f_everyc.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You actually don't need the variable to be introduced by LET. Any (lexical) variable will do.&lt;/p&gt;
&lt;p&gt;Also:&lt;/p&gt;
&lt;p&gt;(let ((a 13) (b 14)) &amp;nbsp;(+ a b))&lt;/p&gt;
&lt;p&gt;is conceptually the same as&lt;/p&gt;
&lt;p&gt;((lambda (a b) (+ a b)) 13 14)&lt;/p&gt;
&lt;p&gt;So you get a closure with:&lt;/p&gt;
&lt;p&gt;(defun foo (a) (lambda (b) (+ a b)))&lt;/p&gt;
&lt;p&gt;and (foo 13) then is a closure that you can call and will always add 13 to a number: &amp;nbsp;(funcall (foo 13) 22)&lt;/p&gt;
&lt;p&gt;Also note that you get a closure from this:&lt;/p&gt;
&lt;p&gt;(let ((a 10)) (flet ((add (b) (+ a b))) &amp;nbsp;(function add)))&lt;/p&gt;
&lt;p&gt;Any function will do. Local named functions, too.&lt;/p&gt;
&lt;p&gt;Above you see that a closure is returned.&lt;/p&gt;
&lt;p&gt;You can also pass a closure to another function:&lt;/p&gt;
&lt;p&gt;(let ((a 10)) (flet ((add (b) (+ a b))) &amp;nbsp; (mapcar (function add) &amp;nbsp;'(1 2 3 4))))&lt;/p&gt;
&lt;p&gt;Above will add 10 to every element of the list and return the result list.&lt;/p&gt;
&lt;p&gt;MAPCAR gets passed a closure and calls it with every element of the list as argument.&lt;/p&gt;
&lt;p&gt;Sure, go ahead and use the examples...&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4845" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4840</link><pubDate>Fri, 05 Sep 2008 18:44:47 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4840</guid><dc:creator>Peter</dc:creator><description>&lt;p&gt;If you're wondering where all the anonymous commenter(s) came from, this article got linked on Reddit: &lt;a rel="nofollow" target="_new" href="http://www.reddit.com/r/programming/comments/6zkav/seeking_closures_so_whats_a_closure_and_why/"&gt;www.reddit.com/.../seeking_closures_so_whats_a_closure_and_why&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4840" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4836</link><pubDate>Fri, 05 Sep 2008 16:22:39 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4836</guid><dc:creator>jlockwood</dc:creator><description>&lt;p&gt;@Ramarren&lt;/p&gt;
&lt;p&gt;Okay, I see your point. &amp;nbsp;Point taken. :)&lt;/p&gt;
&lt;p&gt;@foo&lt;/p&gt;
&lt;p&gt;Ah, I see what you are saying...my mistake. &amp;nbsp;Thanks for clearing things up. &amp;nbsp;As you say, &amp;quot;make-comparison&amp;quot; is currently used to create a chunk of code and is not truly a closure.&lt;/p&gt;
&lt;p&gt;I've quickly read over your example and found it useful. &amp;nbsp;I'd never seen the &amp;quot;every&amp;quot; function before and couldn't find it in the common lisp command reference that I've been using. &amp;nbsp;I imagine its part of common lisp...ran fine in Allegro CL. With your permission I'd like to update the blog entry to reflect what you've provided.&lt;/p&gt;
&lt;p&gt;I appreciate the feedback. &amp;nbsp;I'm but a LISP neophyte, so I'm still figuring a number of things out. &amp;nbsp;I see now that I must always use &amp;quot;let&amp;quot; to bind a variable locally and then I can use it in a closure. &amp;nbsp;I'll have to play with this a bit.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4836" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4819</link><pubDate>Thu, 04 Sep 2008 19:12:16 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4819</guid><dc:creator>Jason Meridth</dc:creator><description>&lt;p&gt;@foo&lt;/p&gt;
&lt;p&gt;Why not use your real name here? &amp;nbsp;You have good input. &amp;nbsp;Just curious. &amp;nbsp;Anonymous commenters drive me nuts.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4819" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4817</link><pubDate>Thu, 04 Sep 2008 17:49:37 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4817</guid><dc:creator>foo</dc:creator><description>&lt;p&gt;Here is a version that really uses closures:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://lispm.dyndns.org/source/closures-at-work.lisp"&gt;lispm.dyndns.org/.../closures-at-work.lisp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can see that the result of calling (where ...) is a closure - the Lisp systems (LispWorks) also tells us that. There are multiple closures involved. MAKE-COMPARISON-FUNCTION returns a closure. MAKE-COMPARISON-FUNCTIONS returns a list of closures. WHERE also returns a closure.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4817" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4816</link><pubDate>Thu, 04 Sep 2008 17:12:27 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4816</guid><dc:creator>Ramarren</dc:creator><description>&lt;p&gt;Yes, I meant the case. I probably should have said that directly. But really, I wasn't even born in the seventies, so I'm just nitpicking. So, while I'm doing that, Common Lisp is case sensitive, and required to be so by the standard, it is just that it is by default in :upcase mode for compatibility with older LISPs. See: &lt;a rel="nofollow" target="_new" href="http://www.lispworks.com/documentation/HyperSpec/Body/23_ab.htm"&gt;www.lispworks.com/.../23_ab.htm&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4816" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4810</link><pubDate>Thu, 04 Sep 2008 16:04:33 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4810</guid><dc:creator>jlockwood</dc:creator><description>&lt;p&gt;@foo&lt;/p&gt;
&lt;p&gt;Ah, if that's the case then I misunderstood. &amp;nbsp;I still write it as LISP, even when referencing CL. &amp;nbsp;I didn't even consider case, as the language is not case sensitive (at least with the implementation I'm using). &amp;nbsp;As you stated, everything is evaluated in upcase. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;@Ramarren&lt;/p&gt;
&lt;p&gt;My apologies if I misunderstood you.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4810" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4809</link><pubDate>Thu, 04 Sep 2008 15:59:51 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4809</guid><dc:creator>jlockwood</dc:creator><description>&lt;p&gt;@Dave&lt;/p&gt;
&lt;p&gt;Nice article! &amp;nbsp;I was considering getting into JavaScript, but decided against it because -- although I love JavaScript as a language -- I thought the language syntax might have made things a little confusing. &amp;nbsp;After getting deeper into JavaScript, I began to view functions as class definitions. &amp;nbsp;Closures are central to JavaScript as they are the only means in supporting object-oriented programming in the language. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;It's interesting, I think if one views JavaScript through the eyes of a LISPer the language kind of makes more sense. &amp;nbsp;I say this because in LISP the line between code and data is kind of blurred. &amp;nbsp;JavaScript uses the same syntax to define functions as it does data constructs (similar to lisp).&lt;/p&gt;
&lt;p&gt;I certainly agree that looking at JavaScript's implementation of closures is quite useful in developing an overall understanding of the concept.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4809" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4808</link><pubDate>Thu, 04 Sep 2008 15:52:45 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4808</guid><dc:creator>foo</dc:creator><description>&lt;p&gt;Joshua: what Ramarren says: Lisp is nowadays called 'Lisp'. In earlier years it was called LISP. Years ago it was all upcase. Even the programs were upcase. Common Lisp has the symbols also internally in upcase format. Nowadays when somebody sees LISP then he thinks of the older Lisp dialects from before the 70s.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4808" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4807</link><pubDate>Thu, 04 Sep 2008 15:51:26 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4807</guid><dc:creator>jlockwood</dc:creator><description>&lt;p&gt;@Justin Paston-Cooper &lt;/p&gt;
&lt;p&gt;Come now Justin, you must know that I joke with tounge in cheek! &amp;nbsp;I don't feel that I need to pander to anyone...nor do I try associate with many people for that matter (ask one of my handful of friends...LOL).&lt;/p&gt;
&lt;p&gt;In truth, I know of a number of people who are adept at several languages yet still find LISP to be cryptic and even intimidating. &amp;nbsp;I wouldn't doubt that the way some universities present the language contribute to this paradigm.&lt;/p&gt;
&lt;p&gt;&amp;gt; I like how you feel the need to pander to the average &lt;/p&gt;
&lt;p&gt;&amp;gt; programmer's thoughts of &amp;quot;OH NO ITS NOT A C BASED &lt;/p&gt;
&lt;p&gt;&amp;gt; LANGUAGE IT LOOKS DIFFERENT SO IT MUST BE BAD &lt;/p&gt;
&lt;p&gt;&amp;gt; AAAAAH&amp;quot;...&lt;/p&gt;
&lt;p&gt;The funny things about this is that I've found such attitudes to be more common among some Ruby developers that I've met...they seem to think that there is no other language but theirs. &amp;nbsp;Of course, there is the VB crowd too...&lt;/p&gt;
&lt;p&gt;The bottom line is that LISP is not a common language and is often forgotten outside of the university. &amp;nbsp;In spite of this, its influence is becomming increasingly apparent in the mainstream languages that get the most attention. &amp;nbsp;I believe that studying the language will help improve overall programming ability as well as offer clear illustrations of concepts introduced into the languages used daily in the workplace.&lt;/p&gt;
&lt;p&gt;If I appeared to pander to one group or another I apologize. &amp;nbsp;I was simply joking about the way LISP is commonly perceived. &amp;nbsp;Its a great language and you don't have to look like the Unibomber to enjoy it!&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4807" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4806</link><pubDate>Thu, 04 Sep 2008 15:48:33 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4806</guid><dc:creator>foo</dc:creator><description>&lt;p&gt;Joshua, unfortunately that's not correct. There is no closure.&lt;/p&gt;
&lt;p&gt;Look at the source of MAKE-COMPARISON.&lt;/p&gt;
&lt;p&gt;It returns a list. The variable LIVING-THING is just a symbol in that list. The macro takes those lists and creates a new list which then gets used as code.&lt;/p&gt;
&lt;p&gt;The backquote expression you have there:&lt;/p&gt;
&lt;p&gt;`(equal (getf living-thing ,field) ,value)&lt;/p&gt;
&lt;p&gt;living-thing is just a symbol in a list. The list is simply like:&lt;/p&gt;
&lt;p&gt;(list 'equal (list 'getf 'living-thing field) value)&lt;/p&gt;
&lt;p&gt;Evaluate that and you get the result list.&lt;/p&gt;
&lt;p&gt;Of course you can't evaluate the result list, because living-thing is nowhere defined. To form a closure you need two things: living-thing needs to be a variable and it needs to reference a definition somewhere. But there is no definition of living-thing around MAKE-COMPARISON.&lt;/p&gt;
&lt;p&gt;But yor code later is:&lt;/p&gt;
&lt;p&gt;(lambda (lliving-thing) (and (equal (getf living-thing :test) :me)))&lt;/p&gt;
&lt;p&gt;Then living-thing is a variable in the lambda-expression. Again no free variable.&lt;/p&gt;
&lt;p&gt;You CAN repair your example but then you need to get rid of your macro. Can you imagine how a closure-based version would look like? If not, I'll post a version for you.&lt;/p&gt;
&lt;p&gt;Think about it... ;-)&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4806" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4804</link><pubDate>Thu, 04 Sep 2008 15:13:38 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4804</guid><dc:creator>jlockwood</dc:creator><description>&lt;p&gt;@Foo&lt;/p&gt;
&lt;p&gt;I'm afraid you are incorrect. &amp;nbsp;Perhaps you misread something? &amp;nbsp;The closure is in &amp;quot;make-comparison&amp;quot; and it references the variable (its the parameter) in the lambda expression.&lt;/p&gt;
&lt;p&gt;(see the paragraph starting with &amp;quot;The &amp;quot;make-comparison&amp;quot; function works just...&amp;quot;)&lt;/p&gt;
&lt;p&gt;The article clearly states that &amp;quot;make-comparison&amp;quot; is where the closure is (which is restated in the paragraph describing the marco). &amp;nbsp;One objective of the article is to illustrate that labmda expressions are not closures - which is apparently not understood by same (based on articles that I've read).&lt;/p&gt;
&lt;p&gt;The lexical context of the closure is the lambda expression in the macro (which is shown in the example using macroexpand-1). &amp;nbsp;The function &amp;quot;make-comparison&amp;quot; can not be evaluated by itself, since &amp;quot;living-thing&amp;quot; is not a bound variable (hence the closure).&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;(eval (make-comparison :test 'me) &lt;/p&gt;
&lt;p&gt;would cause the following error:&lt;/p&gt;
&lt;p&gt;&amp;quot;attempt to take the value of the unbound variable 'LIVING-THING'.&amp;quot;&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4804" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4802</link><pubDate>Thu, 04 Sep 2008 14:38:52 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4802</guid><dc:creator>jlockwood</dc:creator><description>&lt;p&gt;@Ramarren &lt;/p&gt;
&lt;p&gt;I'm afraid I must repectfully diagree with you, but I do admit that the name came after the language. &amp;nbsp;Here's a little history...to avoid argument I've provided references. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;We can use numerous references, but I'll start with wikipedia (1). &amp;nbsp;First off, I agree with the article when it asserts that LISP is actually a family of languages...so Scheme is LISP, just a different dialect. &amp;nbsp;Given that, the term LISP is a symbol referencing all languages in the family allowing us to reference implementations that pre-date the term itself.&lt;/p&gt;
&lt;p&gt;The wikipedia article credits John McCarthy as the language designer (in 1958), which I guess is technically true, but it was originally designed strictly as a mathematical notation for describing computer programs (based on lambda calculus). &amp;nbsp;McCarthy first set out to create a programming language for AI (based on list processing) in 1956 (2). &amp;nbsp;The first actual implementation of LISP was written later that year by S. R. Russell (2). &amp;nbsp;Because Russell first implemented LISP on an IBM 704, we now have the obiquitous and funky functions car and cdr (since they were machine instructions native to the platform).&lt;/p&gt;
&lt;p&gt;I did find a site that has an image from the LISP 1.5 Programmers Manual which was written by McCarthy et al. in 1962, so it's evident that the language was called LISP much earlier than the 70s (3). &amp;nbsp;McCarthy regarded his new creation as a list processing language from its inception, so I think it's fair to say that the language was indeed LISP as early as 1958.&lt;/p&gt;
&lt;p&gt;Thanks for the post and I hope that clears things up a bit.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;
&lt;p&gt;(1) Lisp (programming language). (2008, September 1). In Wikipedia, The Free Encyclopedia. Retrieved 14:05, September 4, 2008, from &lt;a rel="nofollow" target="_new" href="http://en.wikipedia.org/w/index.php?title=Lisp_"&gt;en.wikipedia.org/.../index.php&lt;/a&gt;(programming_language)&amp;amp;oldid=235653687 &lt;/p&gt;
&lt;p&gt;(2) McCarthy, John (1996). &amp;nbsp;The implementation of LISP. &amp;nbsp;The History of Lisp. &amp;nbsp;Retrieved 14:08, September 4, 2008, from &lt;a rel="nofollow" target="_new" href="http://www-formal.stanford.edu/jmc/history/lisp/node3.html"&gt;www-formal.stanford.edu/.../node3.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(3) McJones Paul, Ed. (2008). &amp;nbsp;History of Lisp. &amp;nbsp;Software Preservation Group. &amp;nbsp;Retrieved 14:10, September 4, 2008,&lt;/p&gt;
&lt;p&gt;from &lt;a rel="nofollow" target="_new" href="http://www.softwarepreservation.org/projects/LISP/index.html#LISP_I_and_LISP_1.5_for_IBM_704,_709,_7090_"&gt;www.softwarepreservation.org/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4802" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4801</link><pubDate>Thu, 04 Sep 2008 14:33:18 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4801</guid><dc:creator>foo</dc:creator><description>&lt;p&gt;Joshua, but it is clear to you why your Lisp code does not use any closure?&lt;/p&gt;
&lt;p&gt;First: an anonymous function is not a closure.&lt;/p&gt;
&lt;p&gt;(defun foo () (lambda () 'bar))&lt;/p&gt;
&lt;p&gt;Calling foo does not create a closure. A closure is a function that references a variable from the enclosing lexical scope. None of the function you define does that.&lt;/p&gt;
&lt;p&gt;Second: the closure is a function and its bindings:&lt;/p&gt;
&lt;p&gt;See this:&lt;/p&gt;
&lt;p&gt;(defun make-counter (start increment) (lambda () (let ((value start)) (incf start increment) value)))&lt;/p&gt;
&lt;p&gt;MAKE-COUNTER returns a closure, since the LAMBDA expression references START and INCREMENT, which are defined outside the lambda expression. The closure then is the anonymous function plus the bindings for START and INCREMENT.&lt;/p&gt;
&lt;p&gt;If you look at your code, none of the functions references variables that are introduced by its lexical surroundings.&lt;/p&gt;
&lt;p&gt;You simply don't explain anything about closures here.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4801" width="1" height="1"&gt;</description></item><item><title>re: Seeking Closures</title><link>http://www.lostechies.com/blogs/joshua_lockwood/archive/2008/09/03/seeking-closures.aspx#4800</link><pubDate>Thu, 04 Sep 2008 14:13:18 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:4800</guid><dc:creator>David Alpert</dc:creator><description>&lt;p&gt;Another interesting discussion of closures is taking place in the JavaScript space (e.g. &lt;a rel="nofollow" target="_new" href="http://blog.morrisjohns.com/javascript_closures_for_dummies"&gt;blog.morrisjohns.com/javascript_closures_for_dummies&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;If not identical to the way closures operate or are implemented in modern LISP, Java, or .NET, then at least JavaScript closures might be another way into the concept.&lt;/p&gt;
&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=4800" width="1" height="1"&gt;</description></item></channel></rss>