Hacker News new | ask | show | jobs
by omouse 6416 days ago
"And you still maintain encapsulation, too, because the returned function may access stuff that was only available inside the containing closure (where it was dispatched)."

That only works if your functions can maintain state and if they can, well they're basically objects aren't they...

2 comments

That's my point. You don't need to have a separate special construct for objects, or any kind of support for them, when you have first-class functions.

As for state information, you could just put a 'let' inside there with your variables, and call mutators on them from inside the "object"'s functions.

Hmm, I think all these Scheme-centric classes I've taken have warped my mind. I should seek therapy.

> when you have first-class functions.

This isn't enough without the ability to close over the lexical environment. See Python pre 3.0, without the dictionary/list "hacks".

Well, strictly speaking, they're closures.

There's a lot of overlap between objects and closures, though using one or the other will frame the problem in a slightly different way.

See also: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m...