closures

Understanding closure in Javascript

I'm trying to wrap my head around closures in Javascript. Here is an example from a tutorial: function greeter(name, age) { var message = name + ", who is " + age + " years old, says hi!"; return function greet() { console.log(message); }; } // Generate the closure var bobGreeter = greeter("Bob", 47); // Use the closure bo...

How do I generate memoized recursive functions in Clojure?

I'm trying to write a function that returns a memoized recursive function in Clojure, but I'm having trouble making the recursive function see its own memoized bindings. Is this because there is no var created? Also, why can't I use memoize on the local binding created with let? This slightly unusual Fibonacci sequence maker that starts...

How to define a new global function in javascript

I have an issue trying to make a function global when it is involved in closure. In the code listed below I have an anonymous method which defines at new function on the window called getNameField. (function(){ function alertError(msg){ alert(msg); } window.getNameField=function(fieldId){ try{ if...

Scoping Issues inside jQuery.ajax()

I'm caching label strings by saving them into a variable, but running into weird scoping issues. I know this has to do with closures, but I can't seem to figure out what the issue is exactly. info_lbl = {}; $("#chkCorporateGift").click(function(){ var type = $(this).is(":checked") ? "Corporate" : "Personal"; if(!info_lbl.hasO...

Smalltalk blocks in Objective-c?

Does Objective-C support blocks "a la Smalltalk"? In Smalltalk, blocks are similar to "closures" or "lambda-expressions" or "nameless functions" found in other languages. ...

Refer back to old iterator value in click() function for javascript/jQuery (closure question)

I'm trying to get the "click()" function to display the value of 'i' at the time I passed in the function. But its referring back to the value of 'i' after it finished. I'm drawing a blank on how to get the function to refer to the value of 'i' when I first passed the function in. for( var i=0; i<10; i++){ var ts = $('#<span></span>'...

garbage collection question for javascript

I have two piece of code sample 1 (function(){ var x = 1; this.getx = function() { return x; }; })(); sample 2 (function(){ var x = 1; this.getx = function() { }; })(); both code samples create a closure, x in sample one is referenced, while x in sample two is not referenced, I know x in sample one will not be garbage c...

Closure scope and garbage collection

I've just written some code to perform a timeout action if an asynchronous task takes too long to process, but what is not clear to me is if and when the timeout instance will ever be disposed of (I think it will in the case where the asynchronous task completes in a timely fashion, but otherwise I've got no idea), or if I'm going to be ...

Javascript closure "stores" value at the wrong time

I'm trying to have a counter increase gradually. The following works: function _award(points){ var step = 1; while(points){ var diff = Math.ceil(points / 10); setTimeout( "_change_score_by("+diff+");" /* sigh */, step * 25); points -= diff; step++; } } However, it uses an implicit eval. Evil! ...

Special closure use-cases: Why do closures reference variables and not just values?

Update I am designing an experimental programming language and the question is wether to include closures or just use first-class-functions. To decide this i need realistic use-cases/examples that show the benefit of closures over first-class-functions. I know that you can achieve everything that you can achieve with one of the two with...

Mutable vs Ref variables in terms of capture

My superficial understanding of variables in f# suggests that declaring a variable to be 'mutable' and using a 'ref' variable essentially both do the same thing. They are both different ways to address the same underlying issue - a limited and structured allowance of mutability in a functional language without having to resort to the IO...

Attaching parameters with javascript closures to default parameters in anonymous functions

I want to add some extra parameters to the Google geocoder API call as I'm running it in a loop, but am not sure how to append closure parameters to their anonymous function that already has default parameters that are passed in by the call to the API. For example: for(var i = 0; i < 5; i++) { geocoder.geocode({'address': address}...

Is there a practical reason why I would choose a closure over an object?

I've been getting into OOP javascript recently and more and more I've been hearing about closures. After a day of twisting my brain I now understand them* but I still don't see the advantage over using an object. They appear to to do the same thing but I suspect I'm missing something. *i think Edit I've just spent 20 minutes trying to...

Are closures different in node.js?

I have worked quite a lot with javascript but yesterday, I started using node.js. It's a little script that runs jslint on the files of a folder. For this example, I changed the command to call ls instead of jslint. var sys = require("sys"); var fs = require("fs"); var cp = require('child_process'); var path = fs.realpathSync("./src/")...

setting variable to be used with jquery click function

My apologies if this is just another question that gets asked over and over. I've found some similar questions, the examples just haven't gotten me exactly where I need to be. This is similar to http://stackoverflow.com/questions/359467. $('a.highslide').each(function() { hsGroup = $(this).attr("rel"); if(hsGroup.length > 1){ ...

Access to modified closure... but why?

Saw several similar questions here, but none of them seemed to quite be my issue... I understand (or thought I understood) the concept of closure, and understand what would cause Resharper to complain about access to a modified closure, but in the below code I don't understand how I'm breaching closure. Because primaryApps is declar...

python style: inline function that needs no inlining?

I'mm writing gtk code. I often have short callbacks that don't need to be closures, as they are passed all the parameters they need. For example, I have this in a loop when creating some gtk.TreeViewColumns: def widthChanged(MAINCOL, SPEC, SUBCOL, expandable): if expandable: return w = MAINCOL.get_width() SUBCOL.set_fixed_wi...

C++0x closures / lambdas example

I am attempting to leverage C++0x closures to make the control flow between a custom lexer and parser more straightforward. Without closures, I have the following arrangement: //-------- // lexer.h class Lexer { public: struct Token { int type; QString lexeme; } struct Callback { virtual int processToken(const Token &token) = 0;...

Detecting first and last item inside a Groovy each{} closure

I am using Groovy's handy MarkupBuilder to build an HTML page from various source data. One thing I am struggling to do nicely is build an HTML table and apply different style classes to the first and last rows. This is probably best illustrated with an example... table() { thead() { tr(){ th('class':'l name', 'name') ...

Javascript: Re-assigning a function with another function

Let's say I have these two functions: function fnChanger(fn) { fn = function() { sys.print('Changed!'); } } function foo() { sys.print('Unchanged'); } Now, if I call foo(), I see Unchanged, as expected. However, if I call fnChanger first, I still see Unchanged: fnChanger(foo); foo(); //Unchanged Now, I assume this is becaus...