The Egison programming language