Functional PostScript defines a set of operators that allows users to create and manipulate graphics objects (paths, pictures, bitmap) in Scheme. Once the picture objects are built, they can be rendered through the backend of user's choice.
What is functional? Functional refers to the lack of side effects while working with graphics objects in FPS (except for, of course, when you actually render the pictures) Complex pictures are built by composing many smaller and simpler pictures. For example, to build a picture of a face, you would first build picture of an eye, a mouth, a nose, an eyebrow .. and then composing all these together to form a face.
And why the tie to PostScript? Because PostScript has an excellent renderer, excellent font support, and it is everywhere. Renderers and fonts are very difficult to write and to become as ubiquitous as PS is no easy task either. So we decided to base our system on the popular industry standard to take advantage of its strengths -- we adopted many operators and concepts from PS and implemented the first backend to PS level 2 text. But, really, once the Scheme data structure that describes the picture is built, you can render it using any backend that supports the right framework and methods!
FPS uses PostScript's model of path and picture, and supports transformation and composition of path and picture objects. In FPS, paths are ideal abstract geometric constructs. They can be created from operators such as line, curve, arc, and glyphpath (for paths of characters). Pictures are description of ink and papaer. They can be created by methods such as painting along the path, filling a path, and recoloring another picture.
For more information, please see the tutorial, examples, release announcement, and reference manual from the FPS homepage.