Implementing higher-order algebraic specifications - Heering, Jan (Centrum voor Wiskunde en Informatica <Amsterdam> / Department of Computer Science: Report CS, 1991)
Abstract: "Writing algebraic specifications that are to be executed as rewrite systems is similar to functional programming. There are some differences, however. Algebraic specification languages allow left-hand sides of equations to be complex first-order patterns that would not be allowed in functional languages. Functional languages, on the other hand, have powerful higher-order features not offered by algebraic specification languages. Some functional languages combine higher-order functions with linear first-order patterns involving free data type constructors, thus offering a limited (but highly expressive) mixture of functional programming and algebraic specification