Thanks for all that David :-)

On 12 Feb 2006, at 18:41, David Vallner wrote:

> Da Nedea 12 Februr 2006 18:38 Edward Kenworthy napsal:
>> Hi All
>>
>> I've been programming for more years than I care to remember and am
>> enjoying programming in Ruby (especially on Rails). So far I've found
>> nothing "new" (to me) in Ruby, with the exception of the lisp-like
>> features and that's something I'd really like to explore.
>> Unfortunately, unless I've overlooked it, neither the pick-axe book
>> nor "the ruby way"  seem to cover this. I'm particularly interested
>> in which common problems these features let me solve in a more
>> elegant and concise way than using regular structured/oo approaches.
>>
>> Anyone able to point me to a resource please?
>>
>> Edward
>
> Well, Ruby is a strongly derivative language, there's not THAT much  
> in terms
> of new and exciting features around. It's more about picking out  
> which you
> think are nifty and which not.
>
> As for the lisp-like operations, I'd say the blocks as lexical  
> closures are a
> notable one. Not very often used as such, but they are somewhat  
> useful when
> you want to develop your own control structures, As Seen In  
> Smalltalk (tm).
>
> I'd also put collection mapping / filtering using blocks as one.  
> Which pretty
> much reduces the messy nested loops that you end up with when  
> trying to do
> this in lessay Java into in my opinion much neater method chains.  
> And then
> there's also Enumerable#inject, the swiss knife of collection  
> operations,
> which lets you do pretty much everything. Cf. my favourite #inject  
> example, a
> very cryptic O(n)n factorial:
>
> 	class Integer
> 		def factorial
> 			(1..self).inject(1){|m, n| m * n}
> 		end
> 	end
>
> I also think strongtyping.rb lets you do something along the lines  
> of poor
> man's multimethods. Or rather method overloading based on runtime  
> types
> instead of compile-time.
>
> David Vallner
>