4 ms·
There is no such thing as an "anonymous closure". There are only anonymous functions which may or may not create a closure. Early LISPs either had no way of c
by afjgasdfjlasdf 12y ago
There is no such thing as an "anonymous closure". There are only anonymous functions which may or may not create a closure. Early LISPs either had no way of creating closures, or did so through some sort of function or other mechanism. It wasn't until Scheme came around that lexical closures really became a thing in Lisp world.
Perl and PHP both have closures. In fact, Perl is closer to Scheme/Lisp than most languages (at least Perl doesn't screw up scoping like JavaScript, replace first-class functions with second-class-bastardizations like Ruby, or do whatever Python thinks it's doing with lambda... ugh)
- chubot 12y ago#!/usr/bin/node function main() { var a = 1; console.log(a); // named closure function foo() { a = a + 1; } foo(); console.log(a); // anonymous closure (function() { a = a + 1; })(); console.log(a); } main();
- kaoD 12y agoI'll emphasize GPs words: > There is no such thing as an "anonymous closure". There are only anonymous functions which may or may not create a closure. Which is exactly what you did: calling an anonymous function which happens to create a closure over variable `a`.