Qi

A functional programming language that is a mix of Common Lisp and Prolog. It supports pattern-matching style of functional programming with call-by-need backtracking, while being an embedded extension of Lisp. It is also interesting in being an optionally-statically-typed functional language.