Well, yes, closures can be implemented however you want, in a true lexical scoped language, every function is a closure, not just lambdas, only most don't really close over anything, and can be optimized away. The case of C is, again, instructive.
//foo.c
int global = 0;
int quuxify(){
return global++;
}
//bar.c
extern int quuxify();
printf("%d", quuxify());//prints "0"
printf("%d", quuxify());//prints "1"
even though quuxify() depends on global, which is out of scope in bar.c, the call still compiles. Why? because C is a lexically scoped language, and so variable references in functions refer to the scope the function was declared in, NOT the one it was called in.
And you thought C didn't have closures ;-D