From: Matthew Kamerman
Subject: plet
Date: 
Message-ID: <467@cs.columbia.edu>
  Some people have been intrigued by the code for PLet and PLet* but 
apparently I didn't make clear what it was good for!  These Macros
provide lexically scoped variables whose values persist from call to
call.  These variables can be more useful than DefVars when privacy
or efficiency gains due to improved locality of reference are
important.  

EXAMPLE:

> (DeFun Fibonacci (&Key (n-2 0 n-2p) (n-1 1 n-1p))
    (PLet ((pn-2 0)(pn-1 1))
      (AND n-2p (SetQ pn-2 n-2))
      (AND n-1p (SetQ pn-1 n-1))
      (PSetQ pn-2 pn-1 pn-1 (+ pn-2 pn-1))
      pn-1))
FIBONACCI
> (fibonacci)
(fibonacci)
1
> (fibonacci)
(fibonacci)
2
> (fibonacci)
(fibonacci)
3
> (fibonacci)
(fibonacci)
5
>