Q is a powerful and extensible functional programming language based on the term rewriting calculus. You specify an arbitrary system of equations which the interpreter uses as rewrite rules to reduce expressions to normal form. Q is useful for scientific programming and other advanced applications, and also as a sophisticated kind of desktop calculator. The distribution includes the Q programming tools, a standard library, add-on modules for interfacing to Curl, GNU dbm, ODBC, GNU Octave, ImageMagick, Tcl/Tk, XML/XSLT and an Emacs mode.