Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's mostly taking Smalltalk's ideas, not Lisp's, and it's crashing those ideas from orbit into Perl, of all things.

Ruby doesn't have Lisp-style lambdas, or macros, or conses, it has blocks and messages (it tries to anyway) and classes. That's the Smalltalk recipe book. Ruby uses `select` and `reject`, `collect` and `inject`. Those come from Smalltalk's collections.



Broad generalizations are always false. Smalltalk's influence on Ruby is undeniable, but matz has specifically said Lisp influenced him, as well.

You're speaking of Lisp's _features_, I'm talking about Lisp's _ideas_. It may not have 'Lisp macros,' but it does embrace metaprogramming, for example.


> Broad generalizations are always false

Are you reminding yourself of that issue?

> but matz has specifically said Lisp influenced him, as well.

He might have said that, but I don't see it. Then again, considering what he did to Smalltalk it might be very, very well hidden. And in a pretty sad shape.

> You're speaking of Lisp's _features_, I'm talking about Lisp's _ideas_

They're in the same state.

> It may not have 'Lisp macros,' but it does embrace metaprogramming, for example.

Lisp metaprogramming is macro-based, unless you're getting into CLOS.

Smalltalk's metaprogramming is based on metaclasses and "unhandled message" forwarding.

Guess which one Ruby has?


> Are you reminding yourself of that issue?

Both of us, yes. My original comment was painting with a broad brush, and your follow-up is too.

> Guess which one Ruby has?

You're still speaking around me. The implementation of Ruby's metaprogramming is irrelevant, it's the place of prominence it's been given in the design and culture.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: