Open pattern matching for C++
Purely Functional Data Structures