[rspec-users] Down with Lambda!!

Scott Taylor mailing_lists at railsnewbie.com
Sat Nov 17 22:49:07 EST 2007


On Nov 17, 2007, at 6:59 PM, aslak hellesoy wrote:

> On Nov 18, 2007 12:40 AM, Steven Garcia <lists at ruby-forum.com> wrote:
>> Rspec is all about using natural language to define behavior. In this
>> context, I feel that lambda is sorely out of place. I was chatting on
>> #irc and a pal of mine (wycats) proposed an interesting alternative:
>>
>> alias_method :doing, :lambda
>>
>> so instead of something like
>>
>> lambda {post :create, {:title => nil}}.should
>> raise_error(ActiveRecord::RecordInvalid)
>>
>> we get
>>
>> doing {post :create, {:title => nil}}.should
>> raise_error(ActiveRecord::RecordInvalid)
>>
>> Now it reads like a sentence..much cleaner and less abstract to  
>> those of
>> us who are not Ruby wizards (yet)
>>
>> Chatting with other folks and they are hyped on the idea.
>>
>> What do you guys think?
>>
>> Any chance we could get something like this into trunk?
>
> Probably not. There was a longer discussion of it here:
> http://rubyforge.org/tracker/index.php? 
> func=detail&aid=13837&group_id=797&atid=3152
>
> As you point out, creating an alias is a one-liner.
> The main reason I don't want to add it is that lambda is a common
> idiom, and I don't want to set precedence of aliasing core Ruby idioms
> just because some people don't like the ones in Ruby.
>

Couldn't agree more with the reasoning (as per the last time).  One  
thing that has been circulating around my mind is an aliasing "it"  
with "he", which makes a lot of sense when you write specs from a  
User's perspective:

describe "A", User do

   he "should receiving an extra 2 dollars when he passes go"

end

Anyway - would it be reasonable for this to go into rspec core?  It  
seems too specific to *my* needs, and not central enough to specs in  
general.  Plus, if this were added, should "she" also be added?

Just another thing - I've never understood why so many find lambda to  
be an unusual construction - a block *is* a lambda, and it *is* a  
Proc (more or less), and those are used everywhere in the language.

Scott






More information about the rspec-users mailing list