Yin-yang: concealing the deep embedding of DSLs
Type classes as objects and implicits