November 17th, 2010 — Bartosz Milewski — C++ vs. Haskell: Type Classes vs. Concepts


C++ Concepts got a lot of bad press and were dropped from C++0x. They were considered too complex with too few benefits. And yet their equivalent in Haskell, type classes, are considered simple and powerful. I will talk about both languages, explaining some Haskell and C++ concept syntax as I go. I’ll give examples of problems that type classes solve and C++ concepts could have solved. I’ll show you the hair-raising forensics of a C++ ADL (Argument-Dependent Lookup) mishap that could have been avoided by using concepts.


Bartosz Milewski has a Ph.D. in High-Energy Physics and many years of experience as a C++ programmer. He worked at Microsoft on the Context Index—a search engine before the Internet, still an active part of Windows 7. He designed the first distributed version control system, Code Co-op (before BitKeeper and Git). Bartosz took part in the design of the D language. His main topics of interest are concurrent and distributed computing and language design. He regularly publishes a blog at You may see him occasionally at CSE 950 P at the UW.


Video of the presentation.