Lisp is a large and complex language with a large and complex
runtime to support it. For that reason, Lisp is best suited to
large and complicated problems. Now, a complex problem isn't the
same as a complicated one. A complex problem is one with a lot
of small details, but which isn't hard. Writing an airline
booking system is a complex business, but with enough money and
programmers it isn't hard. Get the difference? A complicated
problem is one which is convoluted, one where traditional divide
and conquer doesn't work. Controlling a robot, or working with
data that isn't tabular (languages, for example), or highly
dynamic situations. Lisp is really well suited to problems where
the solution must be expandable; the classic example is the
emacs text editor. It is fully programmable, and thus a
programming environment in it's own right. In his famous book
PAIP, Norvig says that Lisp is ideal for exploratory
programming. That is, programming a solution to a problem that
isn't fully understood (as opposed to an