Extensible Algebraic Data Types