On Wed, Jan 13, 2010 at 4:56 AM, Martin Coxall <[email protected]> wrote:
> On 13 Jan 2010, at 09:51, Peter Verswyvelen wrote:
> On Sun, Nov 1, 2009 at 2:57 AM, Gregory Collins <[email protected]>
>> Doing OO-style programming in Haskell is difficult and unnatural, it's
>> true (although technically speaking it is possible). That said, nobody's
>> yet to present a convincing argument to me why Java gets a free pass for
>> lacking closures and typeclasses.
> I might be wrong, but doesn't Java's concepts of inner classes and
> interfaces together with adapter classes can be used to replace closures and
> typeclasses in a way?
> Inner classes are not a semantic replacement for closures, even if you
> discount horrific syntax. Inner classes do not close over their lexical
Anonymous classes in Java close over their lexical environment (can
refer to variables in that lexical environment, with values bound at
the time of instance construction) with the caveat that only local
variables/parameters marked as 'final' may be referred to. Aside from
the horrible syntax, this is the key distinction between them, and,
say, Ruby closures. Referring to mutable variables from inside a
closure has its drawbacks, making the horrible syntax the biggest
stumbling block to using them IMHO (other than runtime overhead, which
I believe is also an issue).
Haskell-Cafe mailing list