Martin Odersky's comment<p>"I'm mystified. The expression problem is about adding data variants and operations to a system while statically ensuring that all operations can deal with all variants. How does that even make sense in a dynamically typed language like Clojure? "<p>set off a discussion on whether the problem solved in the talk is actually the expression problem. Interesting reading.<p>Ralf Laemmel three videos explain the expression problem in some detail for anyone interested. (start here <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem" rel="nofollow">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ral...</a>)