Describir: Programming language design concepts