I'm familiar with a number of languages including Scheme which has Lambda expressions. Those lambda expressions are consistent which the principles of what Scheme is (namely lambda calculus).
As I look at closures in groovy they seem, well, out of place. Sure, code as a first class object does make sense. However, it seems to totally run roughshod over the security principles inherent in
Java, from dynamically altering classes to not respecting scope.*
Then we have dynamic typing, totally breaks the type checking provided by Java (I suppose this is also a security issue).
So doesn't groovy break Java?
I understand that Java code works in groovy and that not all groovy code runs as pure Java. I'm not asking a mechanical question, but rather a philosophical one.
--Mark
*On the issue of scope, in a lambda expression you create a new frame which is it's own context (in fact, I think it creates an actual new frame on the stack). A closure seems to have a global context.