From: Guillaume Marcais Date: 2005-04-05T05:35:25+09:00 Subject: Re: Hash::MixIn and Python style Object#dict On Mon, 2005-04-04 at 09:39 +0900, Florian Gro� wrote: > Mathieu Bouchard wrote: > > >>But I wonder: why both you and florian considered the need to have > >>contracts for this mixable things? > > > > Because it helps distinguish responsibility in case of incorrect > > behaviour, so that a bug can be located more easily. There's a similar > > argument in favour of type-checking in general. > > > > A way of working that many duck-typers have adopted is to just ignore > > those things, so that all failures happen at the lowest possible level > > instead of the highest possible one, producing error messages that are > > meaningless in terms of the highest-level. Somehow they treat this as a > > nonissue (and I don't want to speculate on why that is). > > One thing I don't quite like about duck typing is that is applied where > it does not make sense to apply it. > > Even the "If it quacks and walks like a duck it can be handled like a > duck" is an odd one. First of all duck typing never checks the "like a > duck" part. It also isn't correct to handle something that does a few > things like a duck like a duck. You can handle it like something that > does a few things like a duck. That's all you know. > > The other area where I feel it is getting misused is calling > .respond_to?() duck typing. I think that duck typing has always been > about not checking, but rather just doing. > > I guess views will widely differ on this subject and I'm not even sure > if there is one authorative source that could clear all these different > interpretations up... > Do you have any example of usage of your ruby-contract library? Guillaume.