I think 'C++ template programming' might be better also :/
The following syntax in Haskell causes a parse error in my brain:
contains :: NameClass -> QName -> Bool
I really want it to be contains :: (NameClass, QName) -> Bool
Or even just contains :: NameClass, QName -> Bool
Is it just my problem to get over or do other people have it, or is there syntactic sugar coming to my rescue?