Describir: A categorical programming language /