I really recommend reading this paper if you want to get a clearer picture of the relationship between object-oriented programming and functional programming of the Haskell/ML style. At least, it did that for me.
@davewill: As others have indicated I think Erik wasn't talking about being able to define inline interfaces as much as being able to create inline implementations. Imagine a method call that requires an IFoo object and being able to define an implementation and pass an instance all in a single code block. Here's some fantasy C#:
The expression problem is my touchstone for thinking about a lot of design problems, and the tradeoffs and tensions involved. OO vs. FP, Rich vs. Reach, Code vs. Data ... I find it comes up over and over again in different forms. So I think every programmer
should be familiar with the basic concept, thank you for posting this!