For the last few weeks I’ve been revisiting Erik Meijer’s Introduction to Functional Programming course on edX as part of my effort to learn Haskell.
In his lecture on Haskell type classes Meijer says:
What we are going to do in this lecture is we are going to show how to declare new types and how to declare new type classes but also I’m going to compare and contrast this with typical object-oriented programming how these things work there. And what you will see is that although the syntax is a little bit different a lot of the ideas are very common. And this is a general thing that I like to do. Instead of emphasizing the differences I think it is often much more productive to emphasize commonalities. Maybe you should try this too. As programmers we often go: well, but, no… It is much more productive to say: Yes, and… and emphasize what is common.
Coincidentally, someone recently told me about “Yes, and…” in improv. From Wikipedia:
‘Yes, and…’ … is a rule-of-thumb in improvisational comedy that suggests that a participant should accept what another participant has stated (‘yes’) and then expand on that line of thinking (‘and’). …
The ‘Yes’ portion of the rule encourages the acceptance of the contributions added by others. Participants in an improvisation are encouraged to agree to proposition, fostering a sense of cooperation rather than shutting down the suggestion and effectively ending the line of communication.