$ od -c -N 50000 [Erinyes]<LispManual>PAguts.im!6 0000000 \r \r \r { B e g i n S u b S e c 0000020 U n d o i n g } \r { T i t l e 0000040 U n d o i n g } \r { T e x t \r 0000060 \r { T a g U n d o i n g } \r \r 0000100 { i n d e x * P R I M A R Y * 0000120 U n d o i n g } \r \r N o t e : 0000140 T h i s d i s c u s s i o 0000160 n o n l y a p p l i e s t 0000200 o u n d o i n g u n d e r 0000220 t h e e x e c u t i v e a n 0000240 d b r e a k ; t h e e d i 0000260 t o r s h a n d l e s u n d 0000300 o i n g i t s e l f i n a 0000320 s l i g h t l y d i f f e r 0000340 e n t f a s h i o n { n o t e 0000360 , a s d e s c r i b e d 0000400 i n { P a g e R e f T a g 0000420 E d i t o r A n d P A } } . \r \r 0000440 \r T h e { l i s p U N D O } 0000460 c a p a b i l i t y o f t 0000500 h e p r o g r a m m e r ' s 0000520 a s s i s t a n t i s i m p 0000540 l e m e n t e d b y r e q u 0000560 i r i n g t h a t e a c h 0000600 o p e r a t i o n t h a t i 0000620 s t o b e u n d o a b l e 0000640 b e r e s p o n s i b l e 0000660 i t s e l f f o r s a v i n 0000700 g o n t h e h i s t o r y 0000720 l i s t e n o u g h i n f 0000740 o r m a t i o n t o e n a b 0000760 l e r e v e r s a l o f i 0001000 t s s i d e e f f e c t s . 0001020 I n o t h e r w o r d s 0001040 , t h e a s s i s t a n t 0001060 d o e s n o t " k n o w " 0001100 w h e n i t i s a b o u t 0001120 t o p e r f o r m a d e 0001140 s t r u c t i v e o p e r a t 0001160 i o n , i . e . , i t i s 0001200 n o t c o n s t a n t l y 0001220 c h e c k i n g o r a n t i 0001240 c i p a t i n g . I n s t e 0001260 a d , i t s i m p l y e x 0001300 e c u t e s o p e r a t i o n 0001320 s , a n d a n y u n d o a 0001340 b l e c h a n g e s t h a t 0001360 o c c u r a r e a u t o m 0001400 a t i c a l l y s a v e d o 0001420 n t h e h i s t o r y l i 0001440 s t b y t h e r e s p o n 0001460 s i b l e f u n c t i o n s . 0001500 T h e { p a c o m U N D 0001520 O } c o m m a n d , w h i c 0001540 h i n v o l v e s r e c o v 0001560 e r i n g t h e s a v e d 0001600 i n f o r m a t i o n a n d 0001620 p e r f o r m i n g t h e c 0001640 o r r e s p o n d i n g i n v 0001660 e r s e s , w o r k s t h e 0001700 s a m e w a y , s o t h 0001720 a t t h e u s e r c a n 0001740 { p a c o m U N D O } a n 0001760 { p a c o m U N D O } , a n 0002000 d { p a c o m U N D O } t 0002020 h a t e t c . \r \r \r A t e a 0002040 c h p o i n t , u n t i l 0002060 t h e u s e r s p e c i f i 0002100 c a l l y r e q u e s t s a 0002120 n o p e r a t i o n t o b 0002140 e u n d o n e , t h e a s 0002160 s i s t a n t d o e s n o t 0002200 k n o w , o r c a r e , 0002220 w h e t h e r i n f o r m a t 0002240 i o n h a s b e e n s a v 0002260 e d t o e n a b l e t h e 0002300 u n d o i n g . O n l y 0002320 w h e n t h e u s e r a t 0002340 t e m p t s t o u n d o a 0002360 n o p e r a t i o n d o e s 0002400 t h e a s s i s t a n t c 0002420 h e c k t o s e e w h e t 0002440 h e r a n y i n f o r m a t 0002460 i o n h a s b e e n s a v 0002500 e d . I f n o n e h a s 0002520 b e e n s a v e d , a n d 0002540 t h e u s e r h a s s p 0002560 e c i f i c a l l y n a m e d 0002600 t h e e v e n t h e w a 0002620 n t s u n d o n e , t h e 0002640 a s s i s t a n t t y p e s 0002660 { i n d e x * P R I M A R Y * 0002700 n o t h i n g s a v e d ( 0002720 P r i n t e d b y S y s t e 0002740 m ) } { l i s p n o t h i n g 0002760 s a v e d } . ( W h e n 0003000 t h e u s e r s i m p l y 0003020 t y p e s { l i s p U N D O 0003040 } , t h e a s s i s t a n t 0003060 s e a r c h e s f o r t h 0003100 e l a s t u n d o a b l e 0003120 e v e n t , i g n o r i n g 0003140 e v e n t s a l r e a d y u 0003160 n d o n e a s w e l l a s 0003200 { p a c o m U N D O } o p 0003220 e r a t i o n s t h e m s e l 0003240 v e s . ) \r \r \r T h i s i m p 0003260 l e m e n t a t i o n m i n i 0003300 m i z e s t h e o v e r h e 0003320 a d f o r u n d o i n g . 0003340 O n l y t h o s e o p e r 0003360 a t i o n s w h i c h a c t 0003400 u a l l y m a k e c h a n g 0003420 e s a r e a f f e c t e d , 0003440 a n d t h e o v e r h e a 0003460 d i s s m a l l : t w o 0003500 o r t h r e e c e l l s 0003520 o f s t o r a g e f o r s 0003540 a v i n g t h e i n f o r m 0003560 a t i o n , a n d a n e x 0003600 t r a f u n c t i o n c a l 0003620 l . H o w e v e r , e v e 0003640 n t h i s s m a l l p r i 0003660 c e m a y b e t o o e x 0003700 p e n s i v e i f t h e o 0003720 p e r a t i o n i s s u f f 0003740 i c i e n t l y p r i m i t i 0003760 v e a n d r e p e t i t i v 0004000 e , i . e . , i f t h e 0004020 e x t r a o v e r h e a d m 0004040 a y s e r i o u s l y d e g 0004060 r a d e t h e o v e r a l l 0004100 p e r f o r m a n c e o f 0004120 t h e p r o g r a m . H e 0004140 n c e n o t e v e r y d e 0004160 s t r u c t i v e o p e r a t 0004200 i o n i n a p r o g r a m 0004220 s h o u l d n e c e s s a r 0004240 i l y b e u n d o a b l e ; 0004260 t h e p r o g r a m m e r 0004300 m u s t b e a l l o w e d 0004320 t o d e c i d e e a c h c 0004340 a s e i n d i v i d u a l l y 0004360 . \r \r \r { i n d e x * P R I M 0004400 A R Y * / f u n c t i o n s 0004420 } \r \r T h e r e f o r e f o r 0004440 e a c h p r i m i t i v e 0004460 d e s t r u c t i v e f u n c 0004500 t i o n , I n t e r l i s p 0004520 h a s d e f i n e d a n u 0004540 n d o a b l e v e r s i o n 0004560 w h i c h a l w a y s s a v 0004600 e s i n f o r m a t i o n . 0004620 B y c o n v e n t i o n , 0004640 t h e n a m e o f t h e 0004660 u n d o a b l e v e r s i o n 0004700 o f a f u n c t i o n i 0004720 s t h e f u n c t i o n n 0004740 a m e , p r e c e e d e d b 0004760 y " { l i s p / } . " F 0005000 o r e x a m p l e , t h e r 0005020 e i s { f n R P L A C A } 0005040 a n d { f n / R P L A C A 0005060 } , { f n R E M P R O P } 0005100 a n d { f n / R E M P R O P 0005120 } , e t c . { i n d e x X 0005140 { N a m e F N S } { T y p 0005160 e V a r i a b l e } { T e x 0005200 t { l i s p / F N S } } } 0005220 { i n d e x * P R I M A R Y * 0005240 / F N S V a r } T h e " s 0005260 l a s h " f u n c t i o n s 0005300 t h a t a r e c u r r e n t 0005320 l y i m p l e m e n t e d c 0005340 a n b e f o u n d a s t 0005360 h e v a l u e o f { v a r 0005400 / F N S } . \r \r T h e v a r 0005420 i o u s s y s t e m p a c k 0005440 a g e s u s e t h e a p p 0005460 r o p r i a t e u n d o a b l 0005500 e f u n c t i o n s . F o 0005520 r e x a m p l e , { f n B 0005540 R E A K } u s e s { f n / 0005560 P U T D } a n d { f n / R 0005600 E M P R O P } s o a s t o 0005620 b e u n d o a b l e , a n 0005640 d D W I M u s e s { f n 0005660 / R P L A C A } a n d { f n 0005700 / R P L A C D } , w h e n 0005720 i t m a k e s a c o r r e 0005740 c t i o n . S i m i l a r l 0005760 y , t h e u s e r c a n 0006000 s i m p l y u s e t h e c 0006020 o r r e s p o n d i n g { i n 0006040 d e x / f u n c t i o n s } 0006060 { l i s p / } f u n c t i o 0006100 n i f h e w a n t s t o 0006120 m a k e a d e s t r u c t 0006140 i v e o p e r a t i o n i n 0006160 h i s o w n p r o g r a m 0006200 u n d o a b l e . W h e n 0006220 t h e { l i s p / } f u 0006240 n c t i o n i s c a l l e d 0006260 , i t w i l l s a v e t 0006300 h e { p a c o m U N D O } 0006320 i n f o r m a t i o n i n t 0006340 h e c u r r e n t e v e n t 0006360 o n t h e h i s t o r y 0006400 l i s t . \r \r T h e e f f e c 0006420 t s o f t h e f o l l o w 0006440 i n g f u n c t i o n s a r 0006460 e a l w a y s u n d o a b l 0006500 e : { f n D E F I N E } , 0006520 { f n D E F I N E Q } , { f 0006540 n D E F C } { i n d e x D E 0006560 F C F n } ( u s e d t o 0006600 g i v e a f u n c t i o n 0006620 a c o m p i l e d c o d e 0006640 d e f i n i t i o n ) , { f n 0006660 D E F L I S T } , { f n L 0006700 O A D } , { f n S A V E D E 0006720 F } , { f n U N S A V E D E 0006740 F } , { f n B R E A K } , 0006760 { f n U N B R E A K } , { f 0007000 n R E B R E A K } , { f n 0007020 T R A C E } , { f n B R E A 0007040 K I N } , { f n U N B R E A 0007060 K I N } , { f n C H A N G E 0007100 N A M E } , { f n E D I T F 0007120 N S } , { f n E D I T F } , 0007140 { f n E D I T V } , { f n 0007160 E D I T P } , { f n E D I 0007200 T E } , { f n E D I T L } , 0007220 { f n E S U B S T } , { f 0007240 n A D V I S E } , { f n U 0007260 N A D V I S E } , { f n R E 0007300 A D V I S E } , p l u s a n 0007320 y c h a n g e s c a u s e d 0007340 b y D W I M . \r \r \r { T a g 0007360 S l a s h i f y i n g T y p e 0007400 d I n F n s } \r \r T h e p r o 0007420 g r a m m e r ' s a s s i s t 0007440 a n t c a n n o t k n o w 0007460 w h e t h e r e f f i c i e n 0007500 c y a n d o v e r h e a d 0007520 a r e s e r i o u s c o n s 0007540 i d e r a t i o n s f o r t 0007560 h e e x e c u t i o n o f 0007600 a n e x p r e s s i o n i n 0007620 a u s e r { i t p r o g 0007640 r a m } , s o t h e u s e 0007660 r m u s t d e c i d e i f 0007700 h e w a n t s t h e s e 0007720 o p e r a t i o n s u n d o a 0007740 b l e b y e x p l i c i t l 0007760 y c a l l i n g { f n / M 0010000 A P C O N C } , e t c . H 0010020 o w e v e r , { i t t y p e 0010040 d - i n } e x p r e s s i o n 0010060 s r a r e l y i n v o l v e 0010100 i t e r a t i o n s o r l 0010120 e n g t h y c o m p u t a t i 0010140 o n s { i t d i r e c t l y 0010160 } . T h e r e f o r e , b 0010200 e f o r e e v a l u a t i n g 0010220 t h e u s e r i n p u t , 0010240 t h e p r o g r a m m e r ' 0010260 s a s s i s t a n t s u b s 0010300 t i t u t e s t h e c o r r 0010320 e s p o n d i n g u n d o a b 0010340 l e f u n c t i o n f o r 0010360 a n y d e s t r u c t i v e 0010400 f u n c t i o n ( u s i n g 0010420 { i n d e x L I S P X / F N 0010440 } { f n L I S P X / } , { P 0010460 a g e R e f F n L I S P X / 0010500 } ) . F o r e x a m p l e 0010520 , i f t h e u s e r t y 0010540 p e s { l i s p ( M A P C O 0010560 N C N A S D I C { e l l i p 0010600 s i s } ) } , i t i s a c 0010620 t u a l l y { l i s p ( / M 0010640 A P C O N C N A S D I C { e 0010660 l l i p s i s } ) } t h a t 0010700 i s e v a l u a t e d . O 0010720 b v i o u s l y , w i t h a 0010740 m o r e s o p h i s t i c a 0010760 t e d a n a l y s i s o f 0011000 b o t h u s e r i n p u t 0011020 a n d u s e r p r o g r a m 0011040 s , t h e d e c i s i o n 0011060 c o n c e r n i n g w h i c h 0011100 o p e r a t i o n s t o m 0011120 a k e u n d o a b l e c o u 0011140 l d b e b e t t e r a d v 0011160 i s e d . H o w e v e r , 0011200 w e h a v e f o u n d t h 0011220 e c o n f i g u r a t i o n 0011240 d e s c r i b e d h e r e t 0011260 o b e a v e r y s a t i 0011300 s f a c t o r y o n e . T 0011320 h e u s e r p a y s a v 0011340 e r y s m a l l p r i c e 0011360 f o r b e i n g a b l e t 0011400 o u n d o w h a t h e t 0011420 y p e s i n , a n d i f 0011440 h e w i s h e s t o p r o 0011460 t e c t h i m s e l f f r o 0011500 m m a l f u n c t i o n i n g 0011520 i n h i s o w n p r o g 0011540 r a m s , h e c a n h a v 0011560 e h i s p r o g r a m e x 0011600 p l i c i t l y c a l l u n 0011620 d o a b l e f u n c t i o n s 0011640 . \r \r N o t e : T h e u s 0011660 e r c a n d e f i n e n e 0011700 w " s l a s h " f u n c t i 0011720 o n s t o b e t r a n s l 0011740 a t e d o n t y p e - i n 0011760 b y c a l l i n g { f n N 0012000 E W / F N } ( { P a g e R e f 0012020 F n N E W / F N } ) . \r \r { 0012040 n o t e S e c t i o n o n 0012060 T E S T M O D E d e l e t e d 0012100 , p e r i n s t r u c t i o 0012120 n s f r o m l m m ( s t o 0012140 r e d i n S t u f f . T E S 0012160 T M O D E ) } \r \r \r \r { B e g i 0012200 n S u b S e c U n d o i n g 0012220 O u t o f O r d e r } \r { 0012240 T i t l e U n d o i n g O u 0012260 t o f O r d e r } \r { T e x 0012300 t \r \r { T a g U n d o i n g O 0012320 u t O f O r d e r } \r \r { i n d 0012340 e x * P R I M A R Y * U n d 0012360 o i n g o u t o f o r d e 0012400 r } \r \r { f n / R P L A C A } 0012420 o p e r a t e s u n d o a b 0012440 l y b y s a v i n g ( o n 0012460 t h e h i s t o r y l i s 0012500 t ) t h e l i s t c e l l 0012520 t h a t i s t o b e c 0012540 h a n g e d a n d i t s o 0012560 r i g i n a l { f n C A R } 0012600 . U n d o i n g a { f n 0012620 / R P L A C A } s i m p l y 0012640 r e s t o r e s t h e s a 0012660 v e d { f n C A R } . T 0012700 h i s i m p l e m e n t a t i 0012720 o n c a n p r o d u c e u 0012740 n e x p e c t e d r e s u l t 0012760 s w h e n m u l t i p l e 0013000 { f n / R P L A C A } s a r 0013020 e d o n e o n t h e s a 0013040 m e l i s t c e l l , a n 0013060 d t h e n u n d o n e o u 0013100 t o f o r d e r . F o r 0013120 e x a m p l e , i f t h e 0013140 u s e r t y p e s { l i s 0013160 p ( R P L A C A F O O 1 ) 0013200 } , f o l l o w e d b y { 0013220 l i s p ( R P L A C A F O O 0013240 2 ) } , t h e n u n d o e 0013260 s b o t h e v e n t s b y 0013300 u n d o i n g t h e m o s 0013320 t r e c e n t e v e n t f 0013340 i r s t , t h e n u n d o i 0013360 n g t h e o l d e r e v e 0013400 n t , { l i s p F O O } w 0013420 i l l b e r e s t o r e d 0013440 t o i t s s t a t e b e f 0013460 o r e e i t h e r { f n R 0013500 P L A C A } o p e r a t e d . 0013520 H o w e v e r i f t h e 0013540 u s e r u n d o e s t h e 0013560 f i r s t e v e n t , { i t 0013600 t h e n } t h e s e c o n 0013620 d e v e n t , { l i s p ( 0013640 C A R F O O ) } w i l l b 0013660 e { l i s p 1 } , s i n c 0013700 e t h i s i s w h a t w 0013720 a s i n { f n C A R } o 0013740 f { l i s p F O O } b e f 0013760 o r e { l i s p ( R P L A C 0014000 A F O O 2 ) } w a s e x 0014020 e c u t e d . S i m i l a r 0014040 l y , i f t h e u s e r 0014060 t y p e s { l i s p ( N C O 0014100 N C 1 F O O 1 ) } , f o l 0014120 l o w e d b y { l i s p ( 0014140 N C O N C 1 F O O 2 ) } , 0014160 u n d o i n g j u s t { l i 0014200 s p ( N C O N C 1 F O O 1 0014220 ) } w i l l r e m o v e b 0014240 o t h { l i s p 1 } a n d 0014260 { l i s p 2 } f r o m { 0014300 l i s p F O O } . T h e 0014320 p r o b l e m i n b o t h 0014340 c a s e s i s t h a t t h 0014360 e t w o o p e r a t i o n s 0014400 a r e n o t " i n d e p e 0014420 n d e n t . " I n g e n e 0014440 r a l , o p e r a t i o n s 0014460 a r e a l w a y s i n d e p 0014500 e n d e n t i f t h e y a 0014520 f f e c t d i f f e r e n t 0014540 l i s t s o r d i f f e r e 0014560 n t s u b l i s t s o f t 0014600 h e s a m e l i s t . U 0014620 n d o i n g i n r e v e r s 0014640 e o r d e r o f e x e c u 0014660 t i o n , o r u n d o i n g 0014700 i n d e p e n d e n t o p e 0014720 r a t i o n s , i s a l w a 0014740 y s g u a r a n t e e d t o 0014760 d o t h e " r i g h t " 0015000 t h i n g . H o w e v e r , 0015020 u n d o i n g d e p e n d e 0015040 n t o p e r a t i o n s o u 0015060 t o f o r d e r m a y n 0015100 o t a l w a y s h a v e t 0015120 h e p r e d i c t e d e f f 0015140 e c t . \r \r P r o p e r t y l 0015160 i s t o p e r a t i o n s , 0015200 ( i . e . , { f n P U T P R 0015220 O P } , { f n A D D P R O P 0015240 } a n d { f n R E M P R O 0015260 P } ) a r e h a n d l e d 0015300 s p e c i a l l y , s o t h 0015320 a t o p e r a t i o n s t h 0015340 a t a f f e c t d i f f e r 0015360 e n t p r o p e r t i e s o 0015400 n t h e s a m e p r o p e 0015420 r t y l i s t a r e a l w 0015440 a y s i n d e p e n d e n t . 0015460 F o r e x a m p l e , i 0015500 f t h e u s e r t y p e s 0015520 { l i s p ( P U T P R O P 0015540 ' F O O ' B A R 1 ) } t h 0015560 e n { l i s p ( P U T P R O 0015600 P ' F O O ' B A Z 2 ) } , 0015620 t h e n u n d o e s t h e 0015640 f i r s t e v e n t , t h 0015660 e { l i s p B A Z } p r o 0015700 p e r t y w i l l r e m a i 0015720 n , e v e n t h o u g h i 0015740 t m a y n o t h a v e b 0015760 e e n o n t h e p r o p e 0016000 r t y l i s t o f { l i s 0016020 p F O O } a t t h e t i 0016040 m e t h e f i r s t e v e 0016060 n t w a s e x e c u t e d . 0016100 \r \r } { E n d S u b S e c U 0016120 n d o i n g O u t o f O r 0016140 d e r } \r \r \r \r \r \r { B e g i n 0016160 S u b S e c S A V E S E T } 0016200 \r { T i t l e S A V E S E T } 0016220 \r { T e x t \r \r \r T y p e d - i 0016240 n { f n S E T } s a r e 0016260 m a d e u n d o a b l e b y 0016300 s u b s t i t u t i n g a 0016320 c a l l t o { f n S A V E 0016340 S E T } . { f n S E T Q } 0016360 i s m a d e u n d o a b l 0016400 e b y s u b s t i t u t i n 0016420 g { f n S A V E S E T Q } { 0016440 i n d e x S A V E S E T Q F 0016460 N } , a n d { f n S E T Q 0016500 Q } b y { f n S A V E S E 0016520 T Q Q } { i n d e x S A V E S 0016540 E T Q Q F N } , b o t h o 0016560 f w h i c h a r e i m p l 0016600 e m e n t e d i n t e r m s 0016620 o f { f n S A V E S E T } 0016640 . \r \r \r I n a d d i t i o n 0016660 t o s a v i n g e n o u g h 0016700 i n f o r m a t i o n o n 0016720 t h e h i s t o r y l i s t 0016740 t o e n a b l e u n d o i 0016760 n g , { f n S A V E S E T } 0017000 o p e r a t e s i n a m 0017020 a n n e r a n a l o g o u s 0017040 t o { f n S A V E D E F } 0017060 ( { P a g e R e f F n S A V 0017100 E D E F } ) w h e n i t r 0017120 e s e t s a t o p l e v e 0017140 l v a l u e : w h e n i 0017160 t c h a n g e s a t o p 0017200 l e v e l b i n d i n g f r 0017220 o m a v a l u e o t h e r 0017240 t h a n { i n d e x N O B 0017260 I N D L i t a t o m } { l i s 0017300 p N O B I N D } t o a n 0017320 e w v a l u e t h a t i s 0017340 n o t { f n E Q U A L } 0017360 t o t h e o l d o n e , 0017400 { f n S A V E S E T } s a v 0017420 e s t h e o l d v a l u e 0017440 o f t h e v a r i a b l e 0017460 b e i n g s e t o n t h 0017500 e v a r i a b l e ' s p r o 0017520 p e r t y l i s t u n d e r 0017540 t h e p r o p e r t y { i 0017560 n d e x V A L U E P r o p } 0017600 { p r o p V A L U E } , a n 0017620 d p r i n t s t h e m e s 0017640 s a g e { l i s p ( { a r g 0017660 V A R I A B L E } R E S E T 0017700 ) } . T h e o l d v a l 0017720 u e c a n b e r e s t o r 0017740 e d v i a t h e f u n c t 0017760 i o n { f n U N S E T } , 0020000 w h i c h a l s o s a v e s 0020020 t h e c u r r e n t v a l 0020040 u e ( b u t d o e s n o t 0020060 p r i n t a m e s s a g e 0020100 ) . T h u s { i n d e x 0020120 U N S E T F N } { f n U N S 0020140 E T } c a n b e u s e d 0020160 t o f l i p b a c k a n d 0020200 f o r t h b e t w e e n t 0020220 w o v a l u e s . \r \r { i n d 0020240 e x X { N a m e R E S E T } 0020260 { T y p e p r i n t e d b 0020300 y s y s t e m } \r { T e x t 0020320 { l i s p ( { a r g V A R I 0020340 A B L E } R E S E T ) } } } 0020360 \r \r \r O f c o u r s e , { i 0020400 n d e x U N D O P A C o m } 0020420 { p a c o m U N D O } c a n 0020440 b e u s e d a s l o n g 0020460 a s t h e e v e n t c o 0020500 n t a i n i n g t h i s c a 0020520 l l t o { i n d e x S A V 0020540 E S E T F N } { f n S A V E 0020560 S E T } i s s t i l l a c 0020600 t i v e . N o t e h o w e 0020620 v e r t h a t t h e o l d 0020640 v a l u e w i l l r e m a 0020660 i n o n t h e p r o p e r 0020700 t y l i s t , a n d t h e 0020720 r e f o r e b e r e c o v e 0020740 r a b l e v i a { i n d e x 0020760 U N S E T F N } { f n U N 0021000 S E T } , e v e n a f t e r 0021020 t h e o r i g i n a l e v 0021040 e n t h a s b e e n f o r 0021060 g o t t e n . \r \r \r { i n d e x 0021100 R P A Q F N } { f n R P A 0021120 Q } a n d { i n d e x R P 0021140 A Q Q F N } { f n R P A Q Q 0021160 } a r e i m p l e m e n t e 0021200 d v i a c a l l s t o { 0021220 f n S A V E S E T } . T h 0021240 u s o l d v a l u e s w i 0021260 l l b e s a v e d a n d 0021300 m e s s a g e s p r i n t e d 0021320 f o r a n y v a r i a b l 0021340 e s t h a t a r e r e s e 0021360 t a s t h e r e s u l t 0021400 o f l o a d i n g a f i l 0021420 e . \r \r \r F o r t o p l e v 0021440 e l v a r i a b l e s , { i 0021460 n d e x S A V E S E T F N } 0021500 { f n S A V E S E T } a l s 0021520 o a d d s t h e v a r i a 0021540 b l e t o t h e a p p r o 0021560 p r i a t e s p e l l i n g 0021600 l i s t , t h e r e b y n o 0021620 t i c i n g v a r i a b l e s 0021640 s e t i n f i l e s v i 0021660 a { f n R P A Q } o r { 0021700 f n R P A Q Q } , a s w e 0021720 l l a s t h o s e s e t 0021740 v i a t y p e - i n . \r \r \r \r 0021760 { F n D e f { F n N a m e S 0022000 A V E S E T } { F n A r g s 0022020 N A M E V A L U E T O P F L 0022040 G F L G } \r { T e x t \r A n 0022060 u n d o a b l e { f n S E T 0022100 } . { f n S A V E S E T } 0022120 s c a n s t h e s t a c k 0022140 l o o k i n g f o r t h e 0022160 l a s t b i n d i n g o f 0022200 { a r g N A M E } , s e t 0022220 s { a r g N A M E } t o 0022240 { a r g V A L U E } , a n d 0022260 r e t u r n s { a r g V A 0022300 L U E } . \r \r I f t h e b i 0022320 n d i n g c h a n g e d w a 0022340 s a t o p l e v e l b i 0022360 n d i n g , { a r g N A M E 0022400 } i s a d d e d t o t h 0022420 e s p e l l i n g l i s t 0022440 { i n d e x S P E L L I N G S 0022460 3 V a r } { v a r S P E L L 0022500 I N G S 3 } ( s e e { P a g 0022520 e R e f V a r S P E L L I N 0022540 G S 3 } ) . F u r t h e r m 0022560 o r e , i f t h e o l d 0022600 v a l u e w a s n o t { i 0022620 n d e x N O B I N D L i t a 0022640 t o m } { l i s p N O B I N D 0022660 } , a n d w a s a l s o 0022700 n o t { f n E Q U A L } t 0022720 o t h e n e w v a l u e , 0022740 { f n S A V E S E T } c a 0022760 l l s t h e f i l e p a c 0023000 k a g e t o u p d a t e t 0023020 h e n e c e s s a r y f i l 0023040 e r e c o r d s . T h e n 0023060 , i f { i n d e x D F N F 0023100 L G V a r } { v a r D F N F 0023120 L G } i s n o t e q u a l 0023140 t o { l i s p T } , { f 0023160 n S A V E S E T } p r i n t 0023200 s { l i s p ( { a r g N A 0023220 M E } R E S E T ) } , a n d 0023240 s a v e s t h e o l d v 0023260 a l u e o n t h e p r o p 0023300 e r t y l i s t o f { a r 0023320 g N A M E } , u n d e r t 0023340 h e p r o p e r t y { i n d 0023360 e x V A L U E P r o p } { p 0023400 r o p V A L U E } . \r \r \r I f 0023420 { a r g T O P F L G } = { l 0023440 i s p T } , { i n d e x S 0023460 A V E S E T F N } { f n S A 0023500 V E S E T } o p e r a t e s 0023520 a s a b o v e e x c e p t 0023540 t h a t i t a l w a y s u 0023560 s e s { a r g N A M E } ' s 0023600 t o p - l e v e l v a l u e 0023620 c e l l . W h e n { a r 0023640 g T O P F L G } i s { l i 0023660 s p T } , a n d { i n d e 0023700 x D F N F L G V a r } { v a 0023720 r D F N F L G } i s { i n 0023740 d e x A L L P R O P L i t a 0023760 t o m } { l i s p A L L P R O 0024000 P } a n d t h e o l d v 0024020 a l u e w a s n o t { i n 0024040 d e x N O B I N D L i t a t 0024060 o m } { l i s p N O B I N D } 0024100 , { f n S A V E S E T } s 0024120 i m p l y s t o r e s { a r 0024140 g V A L U E } o n t h e 0024160 p r o p e r t y l i s t o f 0024200 { a r g N A M E } u n d e 0024220 r t h e p r o p e r t y { 0024240 i n d e x V A L U E P r o p 0024260 } { p r o p V A L U E } , a 0024300 n d r e t u r n s { a r g 0024320 V A L U E } . T h i s o p 0024340 t i o n i s u s e d f o r 0024360 l o a d i n g f i l e s w 0024400 i t h o u t d i s t u r b i n 0024420 g t h e c u r r e n t v a 0024440 l u e o f v a r i a b l e s 0024460 ( s e e { P a g e R e f V 0024500 a r D F N F L G } ) . \r \r I f 0024520 { a r g F L G } = { l i s p 0024540 N O P R I N T } , { i n d e x 0024560 N O P R I N T L i t a t o m 0024600 } { f n S A V E S E T } s 0024620 a v e s t h e o l d v a l 0024640 u e , b u t d o e s n o t 0024660 p r i n t t h e m e s s a 0024700 g e . T h i s o p t i o n 0024720 i s u s e d b y { f n 0024740 U N S E T } . \r \r I f { a r g 0024760 F L G } = { l i s p N O S A 0025000 V E } , { i n d e x N O S A V 0025020 E L i t a t o m } { f n S 0025040 A V E S E T } d o e s { i t 0025060 n o t } s a v e t h e o 0025100 l d v a l u e o n t h e 0025120 p r o p e r t y l i s t , n 0025140 o r d o e s i t a d d { 0025160 a r g N A M E } t o { i n 0025200 d e x S P E L L I N G S 3 V 0025220 a r } { v a r S P E L L I N G 0025240 S 3 } . H o w e v e r , t 0025260 h e c a l l t o { i n d e 0025300 x S A V E S E T F N } { f n 0025320 S A V E S E T } i s s t i 0025340 l l u n d o a b l e . T h 0025360 i s o p t i o n i s u s e 0025400 d b y { f n / S E T } . \r 0025420 \r I f { a r g F L G } = { l 0025440 i s p N O S T A C K U N D O } 0025460 , { i n d e x N O S T A C K U 0025500 N D O L i t a t o m } { f n 0025520 S A V E S E T } i s u n d 0025540 o a b l e o n l y i f t h 0025560 e b i n d i n g b e i n g 0025600 c h a n g e d i s a t o p 0025620 - l e v e l b i n d i n g , 0025640 i . e . t h i s s a y s w 0025660 h e n r e s e t t i n g a 0025700 v a r i a b l e t h a t h a 0025720 s b e e n r e b o u n d , 0025740 d o n ' t b o t h e r t o 0025760 m a k e i t u n d o a b l e 0026000 . \r \r { n o t e s y n o n y m 0026020 s f o r F L G ? : \r ( c h 0026040 e c k t h e s e , t h a y 0026060 m a y h a v e o t h e r m 0026100 e a n i n g s ) \r N O U N D O 0026120 < - > N O S T A C K U N D O \r 0026140 N O P R O P S A V E < - > N 0026160 O S A V E } \r } } \r \r \r \r { F n 0026200 D e f { F n N a m e U N S E 0026220 T } { F n A r g s N A M E } 0026240 \r { T e x t \r I f { a r g N 0026260 A M E } d o e s n o t c o 0026300 n t a i n a p r o p e r t y 0026320 { i n d e x V A L U E P r 0026340 o p } { p r o p V A L U E } , 0026360 { f n U N S E T } g e n e 0026400 r a t e s a n e r r o r . { 0026420 i n d e x N O V A L U E S 0026440 A V E D : E r r o r } O t 0026460 h e r w i s e { f n U N S E 0026500 T } c a l l s { f n S A V 0026520 E S E T } w i t h { a r g 0026540 N A M E } , t h e p r o p e 0026560 r t y v a l u e , { a r g 0026600 T O P F L G } = { l i s p T } 0026620 , a n d { a r g F L G } = 0026640 { l i s p N O P R I N T } . \r 0026660 } } \r \r } { E n d S u b S e c 0026700 S A V E S E T } \r \r \r \r \r { B 0026720 e g i n S u b S e c U N D O 0026740 N L S E T Q a n d R E S E T 0026760 U N D O } \r { T i t l e U N D 0027000 O N L S E T Q a n d R E S E 0027020 T U N D O } \r { T e x t \r \r T h 0027040 e f u n c t i o n { f n U 0027060 N D O N L S E T Q } p r o v i 0027100 d e s a l i m i t e d f o 0027120 r m o f b a c k t r a c k i 0027140 n g : i f a n e r r o r 0027160 o c c u r s u n d e r t h 0027200 e { f n U N D O N L S E T Q 0027220 } , a l l u n d o a b l e 0027240 s i d e e f f e c t s e x e 0027260 c u t e d u n d e r t h e 0027300 { f n U N D O N L S E T Q } 0027320 a r e u n d o n e . { f n 0027340 R E S E T U N D O } , u s e 0027360 d i n c o n j u n c t i o n 0027400 w i t h { f n R E S E T L 0027420 S T } a n d { f n R E S E 0027440 T S A V E } ( { P a g e R e f 0027460 F n R E S E T S A V E } ) , 0027500 p r o v i d e s a m o r e 0027520 g e n e r a l u n d o c a 0027540 p a b i l i t y w h e r e t 0027560 h e u s e r c a n s p e c 0027600 i f y t h a t t h e s i d 0027620 e e f f e c t s b e u n d 0027640 o n e a f t e r t h e s p 0027660 e c i f i e d c o m p u t a t 0027700 i o n f i n i s h e s , i s 0027720 a b o r t e d b y a n e 0027740 r r o r , o r b y a c o 0027760 n t r o l - D . \r \r \r \r { F n D 0030000 e f { F n N a m e U N D O N 0030020 L S E T Q } { F n A r g s U 0030040 N D O F O R M { a n o n a r g 0030060 } } \r { T y p e N L A M B D A 0030100 } \r { T e x t \r A n n l a m b 0030120 d a f u n c t i o n s i m i 0030140 l a r t o { i n d e x N L 0030160 S E T Q F N } { f n N L S E 0030200 T Q } ( { P a g e R e f F n 0030220 N L S E T Q } ) . { f n 0030240 U N D O N L S E T Q } e v a l 0030260 u a t e s { a r g U N D O F 0030300 O R M } , a n d i f n o 0030320 e r r o r o c c u r s d u r 0030340 i n g t h e e v a l u a t i 0030360 o n , r e t u r n s { l i s 0030400 p ( L I S T ( E V A L { a 0030420 r g U N D O F O R M } ) ) } 0030440 a n d p a s s e s t h e u 0030460 n d o i n f o r m a t i o n 0030500 f r o m { a r g U N D O F O 0030520 R M } ( i f a n y ) u p w 0030540 a r d s . I f a n e r r 0030560 o r d o e s o c c u r , t 0030600 h e { f n U N D O N L S E T 0030620 Q } r e t u r n s { l i s p 0030640 N I L } , a n d a n y u 0030660 n d o a b l e c h a n g e s 0030700 m a d e d u r i n g t h e 0030720 e v a l u a t i o n o f { a 0030740 r g U N D O F O R M } a r e 0030760 u n d o n e . \r \r \r A n y u 0031000 n d o i n f o r m a t i o n 0031020 i s s t o r e d d i r e c t 0031040 l y o n t h e h i s t o r 0031060 y e v e n t ( i f { i n d 0031100 e x L I S P X H I S T V a r 0031120 } { v a r L I S P X H I S T } 0031140 i s n o t { l i s p N I 0031160 L } ) , s o t h a t i f 0031200 t h e u s e r c o n t r o l 0031220 - D ' s o u t o f t h e 0031240 { f n U N D O N L S E T Q } , 0031260 t h e e v e n t i s s t 0031300 i l l u n d o a b l e . \r \r \r 0031320 { f n U N D O N L S E T Q } 0031340 w i l l o p e r a t e c o r 0031360 r e c t l y i f { i n d e x 0031400 # U N D O S A V E S V a r } 0031420 { v a r # U N D O S A V E S } 0031440 i s o r h a s b e e n 0031460 e x c e e d e d f o r t h i 0031500 s e v e n t , o r i s e 0031520 x c e e d e d w h i l e u n 0031540 d e r t h e s c o p e o f 0031560 t h e { f n U N D O N L S 0031600 E T Q } . \r \r \r N o t e : C 0031620 a u t i o n m u s t b e e 0031640 x e r c i s e d i n u s i n 0031660 g c o r o u t i n e s o r 0031700 o t h e r n o n - s t a n d a 0031720 r d m e a n s o f e x i t 0031740 i n g w h i l e u n d e r 0031760 a n { f n U N D O N L S E T 0032000 Q } . S e e d i s c u s s 0032020 i o n i n { P a g e R e f 0032040 F n R E S E T L S T } . \r } } 0032060 \r \r \r \r { F n D e f { F n N a 0032100 m e R E S E T U N D O } { F 0032120 n A r g s X S T O P F L G } 0032140 \r { T e x t \r F o r u s e i 0032160 n c o n j u n c t i o n w i 0032200 t h { f n R E S E T L S T } 0032220 ( { P a g e R e f F n R E 0032240 S E T L S T } ) . { l i s p 0032260 ( R E S E T U N D O ) } i n 0032300 i t i a l i z e s t h e s a 0032320 v i n g o f u n d o i n f 0032340 o r m a t i o n a n d r e t 0032360 u r n s a v a l u e w h i 0032400 c h w h e n g i v e n b a 0032420 c k t o { f n R E S E T U 0032440 N D O } u n d o e s t h e 0032460 i n t e r v e n i n g s i d e 0032500 e f f e c t s . F o r e 0032520 x a m p l e , { l i s p ( R 0032540 E S E T L S T ( R E S E T S A 0032560 V E ( R E S E T U N D O ) ) 0032600 . { a r g F O R M S } ) } 0032620 w i l l u n d o t h e s i 0032640 d e e f f e c t s o f { a 0032660 r g F O R M S } o n n o r 0032700 m a l e x i t , o r i f 0032720 a n e r r o r o c c u r s 0032740 o r a c o n t r o l - D i 0032760 s t y p e d . \r \r \r I f { a 0033000 r g S T O P F L G } = { l i s 0033020 p T } , { f n R E S E T U 0033040 N D O } s t o p s a c c u m 0033060 u l a t i n g u n d o i n f 0033100 o r m a t i o n i t i s s 0033120 a v i n g o n { a r g X } 0033140 . N o t e t h a t t h i 0033160 s h a s n o b e a r i n g 0033200 o n t h e s a v i n g o 0033220 f u n d o i n f o r m a t i 0033240 o n o n h i g h e r { f n 0033260 R E S E T U N D O } ' s , o 0033300 r o n b e i n g a b l e 0033320 t o u n d o t h e e n t i 0033340 r e e v e n t . \r \r F o r e 0033360 x a m p l e , \r \r { l i s p c o 0033400 d e \r ( R E S E T L S T \r 0033420 ( S E T Q F O O ( R E S E T 0033440 U N D O ) ) \r ( R E S E T 0033460 S A V E N I L ( L I S T ' 0033500 R E S E T U N D O F O O ) ) \r 0033520 ( A D V I S E { e l l i 0033540 p s i s } ) \r ( R E S E T 0033560 U N D O F O O T ) \r . 0033600 { a r g F O R M S } ) } \r \r 0033620 \r w o u l d c a u s e t h e 0033640 a d v i c e t o b e u n 0033660 d o n e , b u t { i t n o 0033700 t } a n y o f t h e s i 0033720 d e e f f e c t s i n { a 0033740 r g F O R M S } . \r } } \r \r \r 0033760 } { E n d S u b S e c U N D 0034000 O N L S E T Q a n d R E S E 0034020 T U N D O } \r \r \r } { E n d S 0034040 u b S e c U n d o i n g } \r \r 0034060 \r \r \r \r \r { B e g i n S u b S 0034100 e c F o r m a t a n d U s 0034120 e o f t h e H i s t o r y 0034140 L i s t } \r { T i t l e F o 0034160 r m a t a n d U s e o f 0034200 t h e H i s t o r y L i s t 0034220 } \r { T e x t \r \r \r { T a g H 0034240 i s t o r y L i s t F o r m a t 0034260 } \r \r { i n d e x H i s t o r 0034300 y l i s t s } \r { i n d e x 0034320 * P R I M A R Y * H i s t o r 0034340 y l i s t f o r m a t } \r \r 0034360 \r T h e s y s t e m c u r r 0034400 e n t l y u s e s t h r e e 0034420 h i s t o r y l i s t s , 0034440 { i n d e x * P R I M A R Y * 0034460 L I S P X H I S T O R Y V a 0034500 r } { v a r L I S P X H I S T 0034520 O R Y } f o r t h e t o p 0034540 - l e v e l I n t e r l i s p 0034560 e x e c u t i v e , { i n d 0034600 e x E D I T H I S T O R Y V 0034620 a r } { v a r E D I T H I S T 0034640 O R Y } f o r t h e e d i 0034660 t o r s , a n d { i n d e x 0034700 * P R I M A R Y * A R C H I 0034720 V E L S T V a r } { v a r A 0034740 R C H I V E L S T } f o r a 0034760 r c h i v i n g e v e n t s 0035000 ( s e e { P a g e R e f P A 0035020 C o m A R C H I V E } ) . 0035040 A l l h i s t o r y l i s t 0035060 s h a v e t h e s a m e 0035100 f o r m a t , u s e t h e 0035120 s a m e f u n c t i o n s , 0035140 { i n d e x H I S T O R Y S A 0035160 V E F N } { f n H I S T O R 0035200 Y S A V E } , f o r r e c o 0035220 r d i n g e v e n t s , a n 0035240 d u s e t h e s a m e s 0035260 e t o f f u n c t i o n s 0035300 f o r i m p l e m e n t i n g 0035320 c o m m a n d s t h a t r 0035340 e f e r t o t h e h i s t 0035360 o r y l i s t , e . g . , 0035400 { f n H I S T O R Y F I N D } 0035420 , { f n P R I N T H I S T O 0035440 R Y } , { f n U N D O S A V 0035460 E } , e t c . \r \r \r E a c h 0035500 h i s t o r y l i s t i s 0035520 a l i s t o f t h e f o 0035540 r m { l i s p ( { a r g L 0035560 } { a r g E V E N T # } { 0035600 a r g S I Z E } { a r g M 0035620 O D } ) } , w h e r e { a r 0035640 g L } i s t h e l i s t 0035660 o f e v e n t s w i t h 0035700 t h e m o s t r e c e n t 0035720 e v e n t f i r s t , { a r 0035740 g E V E N T # } i s t h e 0035760 e v e n t n u m b e r f o 0036000 r t h e m o s t r e c e n 0036020 t e v e n t o n { a r g 0036040 L } , { a r g S I Z E } i 0036060 s t h e s i z e o f t h 0036100 e t i m e - s l i c e ( b e 0036120 l o w ) , i . e . , t h e 0036140 m a x i m u m l e n g t h o 0036160 f { a r g L } , a n d { 0036200 a r g M O D } i s t h e 0036220 h i g h e s t p o s s i b l e 0036240 e v e n t n u m b e r . 0036260 { v a r L I S P X H I S T O R 0036300 Y } a n d { v a r E D I T 0036320 H I S T O R Y } a r e b o t 0036340 h i n i t i a l i z e d t o 0036360 { l i s p ( N I L 0 1 0 0036400 0 1 0 0 ) } . S e t t i n 0036420 g { v a r L I S P X H I S T 0036440 O R Y } o r { v a r E D I 0036460 T H I S T O R Y } t o { l i 0036500 s p N I L } d i s a b l e s 0036520 a l l h i s t o r y f e a 0036540 t u r e s , s o { v a r L 0036560 I S P X H I S T O R Y } a n d 0036600 { v a r E D I T H I S T O R 0036620 Y } a c t l i k e f l a g 0036640 s a s w e l l a s r e p 0036660 o s i t o r i e s o f e v e 0036700 n t s . \r \r N o t e : O n e 0036720 o f t h e r e a s o n s 0036740 w h y u s e r s m a y d i 0036760 s a b l e t h e h i s t o r 0037000 y l i s t f a c i l i t y 0037020 i s t o a l l o w t h e 0037040 g a r b a g e c o l l e c t o 0037060 r t o r e c l a i m o b j 0037100 e c t s s t o r e d o n t 0037120 h e h i s t o r y l i s t . 0037140 S i m p l y s e t t i n g 0037160 { v a r L I S P X H I S T O 0037200 R Y } t o { l i s p N I L 0037220 } w i l l n o t n e c e s 0037240 s a r i l y r e m o v e a l 0037260 l p o i n t e r s t o t h 0037300 e h i s t o r y l i s t . 0037320 { f n G A I N S P A C E } 0037340 ( { P a g e R e f F n G A I 0037360 N S P A C E } ) i s a u s 0037400 e f u l f u n c t i o n w h 0037420 e n t r y i n g t o r e c 0037440 l a i m m e m o r y s p a c 0037460 e . \r \r { T a g T i m e S l i 0037500 c e } \r { i n d e x * P R I M 0037520 A R Y * T i m e - s l i c e 0037540 o f h i s t o r y l i s t } 0037560 \r \r E a c h h i s t o r y l 0037600 i s t h a s a m a x i m u 0037620 m l e n g t h , c a l l e d 0037640 i t s " t i m e - s l i c e 0037660 . " A s n e w e v e n t 0037700 s o c c u r , e x i s t i n 0037720 g e v e n t s a r e a g e 0037740 d , a n d t h e o l d e s 0037760 t e v e n t s a r e " f o 0040000 r g o t t e n . " F o r e 0040020 f f i c i e n c y , t h e s 0040040 t o r a g e u s e d t o r 0040060 e p r e s e n t t h e f o r 0040100 g o t t e n e v e n t i s 0040120 r e u s e d i n t h e r e 0040140 p r e s e n t a t i o n o f 0040160 t h e n e w e v e n t , s 0040200 o t h e h i s t o r y l i 0040220 s t i s a c t u a l l y a 0040240 r i n g b u f f e r . T 0040260 h e t i m e - s l i c e o f 0040300 a h i s t o r y l i s t 0040320 c a n b e c h a n g e d w 0040340 i t h t h e f u n c t i o n 0040360 { i n d e x C H A N G E S L 0040400 I C E F N } { f n C H A N G 0040420 E S L I C E } ( { P a g e R e 0040440 f F n C H A N G E S L I C E 0040460 } ) . L a r g e r t i m e 0040500 - s l i c e s e n a b l e l 0040520 o n g e r " m e m o r y s p 0040540 a n s , " b u t t i e u p 0040560 c o r r e s p o n d i n g l y 0040600 g r e a t e r a m o u n t s 0040620 o f s t o r a g e . S i 0040640 n c e t h e u s e r s e l 0040660 d o m n e e d s r e a l l y 0040700 " a n c i e n t h i s t o r 0040720 y , " a n d a f a c i l i 0040740 t y i s p r o v i d e d f 0040760 o r s a v i n g a n d r e 0041000 m e m b e r i n g s e l e c t 0041020 e d e v e n t s ( s e e { 0041040 p a c o m N A M E } a n d 0041060 { p a c o m R E T R I E V E } 0041100 , { P a g e R e f P A C o m 0041120 N A M E } ) , a r e l a t 0041140 i v e l y s m a l l t i m e 0041160 - s l i c e s u c h a s 3 0041200 0 e v e n t s i s m o r e 0041220 t h a n a d e q u a t e , 0041240 a l t h o u g h s o m e u s 0041260 e r s p r e f e r t o s e 0041300 t t h e t i m e - s l i c e 0041320 a s l a r g e a s 1 0 0 0041340 e v e n t s . \r \r { T a g E 0041360 v e n t N u m b e r s } \r { i n 0041400 d e x * P R I M A R Y * E v 0041420 e n t n u m b e r s } \r \r I f 0041440 { v a r P R O M P T # F L G 0041460 } ( { P a g e R e f V a r 0041500 P R O M P T # F L G } ) i s 0041520 s e t t o { l i s p T } , 0041540 a n " e v e n t n u m b e 0041560 r " w i l l b e p r i n t 0041600 e d b e f o r e e a c h p 0041620 r o m p t . M o r e r e c 0041640 e n t e v e n t s h a v e 0041660 h i g h e r n u m b e r s . 0041700 W h e n t h e e v e n t 0041720 n u m b e r o f t h e c u 0041740 r r e n t e v e n t i s 1 0041760 0 0 , t h e n e x t e v e 0042000 n t w i l l b e g i v e n 0042020 n u m b e r 1 . I f t 0042040 h e t i m e - s l i c e i s 0042060 g r e a t e r t h a n 1 0 0042100 0 , t h e " r o l l - o v e 0042120 r " o c c u r s a t t h e 0042140 n e x t h i g h e s t h u 0042160 n d r e d , s o t h a t a 0042200 t n o t i m e w i l l t 0042220 w o e v e n t s e v e r h 0042240 a v e t h e s a m e e v e 0042260 n t n u m b e r . F o r 0042300 e x a m p l e , i f t h e 0042320 t i m e - s l i c e i s 1 5 0042340 0 , e v e n t n u m b e r 0042360 1 w i l l f o l l o w e v 0042400 e n t n u m b e r 2 0 0 . \r 0042420 \r E a c h i n d i v i d u a l 0042440 e v e n t o n { a r g L 0042460 } i s a l i s t o f t 0042500 h e f o r m { l i s p ( { 0042520 a r g I N P U T } { a r g 0042540 I D } { a r g V A L U E } 0042560 . { a r g P R O P S } ) } . 0042600 { a r g I D } i s t h 0042620 e p r o m p t c h a r a c t 0042640 e r f o r t h i s e v e n 0042660 t , e . g . , { l i s p _ 0042700 } , { l i s p : } , { l i 0042720 s p * } , e t c . { a r 0042740 g V A L U E } i s t h e 0042760 v a l u e o f t h e e v e 0043000 n t , a n d i s i n i t i 0043020 a l i z e d t o { i n d e x 0043040 b e l l ( i n h i s t o 0043060 r y e v e n t ) } b e l l . 0043100 O n { i n d e x E D I T H 0043120 I S T O R Y V a r } { v a r 0043140 E D I T H I S T O R Y } , t h 0043160 i s f i e l d i s u s e d 0043200 t o s a v e t h e s i d 0043220 e e f f e c t s o f e a c 0043240 h c o m m a n d ( s e e { 0043260 P a g e R e f T a g E d i t 0043300 o r A n d P A } ) . { a r g 0043320 P R O P S } i s a p r o 0043340 p e r t y l i s t u s e d 0043360 t o a s s o c i a t e o t h 0043400 e r i n f o r m a t i o n w 0043420 i t h t h e e v e n t ( d 0043440 e s c r i b e d b e l o w ) . 0043460 \r \r \r { a r g I N P U T } i 0043500 s t h e i n p u t s e q u 0043520 e n c e f o r t h e e v e 0043540 n t . N o r m a l l y , t 0043560 h i s i s j u s t t h e 0043600 i n p u t t h a t t h e u 0043620 s e r t y p e d - i n . F 0043640 o r a n A P P L Y - f o r m 0043660 a t i n p u t ( s e e { P 0043700 a g e R e f T e r m A P P L 0043720 Y - f o r m a t i n p u t } ) 0043740 , t h i s i s a l i s t 0043760 c o n s i s t i n g o f t 0044000 w o e x p r e s s i o n s ; 0044020 f o r a n E V A L - f o r m 0044040 a t i n p u t , t h i s i 0044060 s a l i s t o f j u s t 0044100 o n e e x p r e s s i o n ; 0044120 f o r a n i n p u t e n 0044140 t e r e d a s l i s t o f 0044160 a t o m s , { a r g I N P 0044200 U T } i s s i m p l y t h 0044220 a t l i s t . F o r e x 0044240 a m p l e , \r \r { B e g i n L 0044260 a b e l e d L i s t f o r m a 0044300 t o f I N P U T i n e v 0044320 e n t } \r \r { L a b e l U s e 0044340 r I n p u t } \t \t \t { T e x t 0044360 { a r g I N P U T } i s : 0044400 } \r \r { L a b e l { l i s p 0044420 P L U S [ 1 1 ] } } \t \t { T e 0044440 x t { l i s p ( P L U S ( 0044460 1 1 ) ) } } \r \r { L a b e l 0044500 { l i s p ( P L U S 1 1 ) 0044520 } } \t \t { T e x t { l i s p 0044540 ( ( P L U S 1 1 ) ) } } \r \r 0044560 { L a b e l { l i s p P L U 0044600 S 1 1 { c r } } } \t { T e x 0044620 t { l i s p ( P L U S 1 0044640 1 ) } } \r \r { E n d L a b e l 0044660 e d L i s t f o r m a t o f 0044700 I N P U T i n e v e n t } 0044720 \r \r \r \r \r { T a g P s e u d o 0044740 C a r r i a g e R e t u r n } \r 0044760 { i n d e x * P R I M A R Y * 0045000 P s e u d o - c a r r i a g e 0045020 r e t u r n } \r \r I f t h e 0045040 u s e r t y p e s i n a 0045060 p r o g r a m m e r ' s a s 0045100 s i s t a n t c o m m a n d 0045120 t h a t " u n r e a d s " a 0045140 n d r e e x e c u t e s o t 0045160 h e r e v e n t s ( { p a c 0045200 o m R E D O } , { p a c o m 0045220 U S E } , { i n d e x U S E 0045240 P A C o m } , e t c . ) , 0045260 { a r g I N P U T } c o n t 0045300 a i n s a " s e q u e n c e 0045320 " o f t h e i n p u t s 0045340 f r o m t h e r e d o n e 0045360 e v e n t s . S p e c i f i 0045400 c a l l y , t h e { a r g 0045420 I N P U T } f i e l d s f r 0045440 o m t h e s p e c i f i e d 0045460 e v e n t s a r e c o n c 0045500 a t e n a t e d i n t o a 0045520 s i n g l e l i s t , s e p 0045540 e r a t e d b y s p e c i a 0045560 l m a r k e r s c a l l e d 0045600 " p s e u d o - c a r r i a g 0045620 e r e t u r n s , " w h i c 0045640 h p r i n t o u t a s t 0045660 h e s t r i n g { l i s p 0045700 " < c . r . > " } . W h e n 0045720 t h e r e s u l t o f t 0045740 h i s c o n c a t e n a t i o 0045760 n i s " r e r e a d , " t 0046000 h e p s e u d o - c a r r i a 0046020 g e - r e t u r n s a r e t 0046040 r e a t e d b y { i n d e x 0046060 L I S P X R E A D F N } { f 0046100 n L I S P X R E A D } a n d 0046120 { i n d e x R E A D L I N E 0046140 F N } { f n R E A D L I N E 0046160 } e x a c t l y a s r e a 0046200 l c a r r i a g e r e t u r 0046220 n s , i . e . , t h e y s 0046240 e r v e t o d i s t i n g u 0046260 i s h b e t w e e n A P P L 0046300 Y - f o r m a t a n d E V A 0046320 L - f o r m a t i n p u t s 0046340 t o { i n d e x L I S P X 0046360 F N } { f n L I S P X } , a 0046400 n d t o d e l i m i t l i 0046420 n e c o m m a n d s t o t 0046440 h e e d i t o r . \r \r N o t e 0046460 : T h e v a l u e o f 0046500 t h e v a r i a b l e { v a 0046520 r H I S T S T R 0 } { i n d e 0046540 x * P R I M A R Y * H I S T 0046560 S T R 0 V a r } i s u s e 0046600 d t o r e p r e s e n t a 0046620 p s e u d o - c a r r i a g e 0046640 r e t u r n . T h i s i 0046660 s i n i t i a l l y t h e 0046700 s t r i n g { i n d e x * P 0046720 R I M A R Y * " < c . r . > " 0046740 ( i n h i s t o r y c o m 0046760 m a n d s ) } { l i s p " < c 0047000 . r . > " } . N o t e t h 0047020 a t t h e f u n c t i o n s 0047040 t h a t r e c o g n i z e 0047060 p s e u d o - c a r r i a g e 0047100 r e t u r n s c o m p a r e 0047120 t h e m t o { v a r H I S 0047140 T S T R 0 } u s i n g { f n 0047160 E Q } , s o t h i s m a 0047200 r k e r w i l l n e v e r 0047220 b e c o n f u s e d w i t h 0047240 a s t r i n g t h a t w 0047260 a s t y p e d i n b y t 0047300 h e u s e r . \r \r T h e s a 0047320 m e c o n v e n t i o n i s 0047340 u s e d f o r r e p r e s 0047360 e n t i n g m u l t i p l e 0047400 i n p u t s w h e n a { p 0047420 a c o m U S E } c o m m a n 0047440 d i n v o l v e s s e q u e 0047460 n t i a l s u b s t i t u t i 0047500 o n s . F o r e x a m p l 0047520 e , i f t h e u s e r t 0047540 y p e s { l i s p G E T D ( 0047560 F O O ) } a n d t h e n { 0047600 l i s p U S E F I E F U M 0047620 F O R F O O } , t h e i 0047640 n p u t s e q u e n c e t h 0047660 a t w i l l b e c o n s t 0047700 r u c t e d i s { l i s p 0047720 ( G E T D ( F I E ) " < c . 0047740 r . > " G E T D ( F U M ) ) 0047760 } , w h i c h i s t h e 0050000 r e s u l t o f s u b s t i 0050020 t u t i n g { l i s p F I E 0050040 } f o r { l i s p F O O } 0050060 i n { l i s p ( G E T D 0050100 ( F O O ) ) } c o n c a t e n 0050120 a t e d w i t h t h e r e 0050140 s u l t o f s u b s t i t u 0050160 t i n g { l i s p F U M } 0050200 f o r { l i s p F O O } i 0050220 n { l i s p ( G E T D ( F 0050240 O O ) ) } . \r \r \r N o t e t h 0050260 a t o n c e a m u l t i p 0050300 l e i n p u t h a s b e e 0050320 n e n t e r e d a s t h e 0050340 i n p u t p o r t i o n o 0050360 f a n e w e v e n t , t 0050400 h a t e v e n t c a n b e 0050420 t r e a t e d e x a c t l y 0050440 t h e s a m e a s o n e 0050460 r e s u l t i n g f r o m 0050500 t y p e - i n . I n o t h 0050520 e r w o r d s , n o s p e 0050540 c i a l c h e c k s h a v e 0050560 t o b e m a d e w h e n 0050600 { i t r e f e r e n c i n g 0050620 } a n e v e n t , t o s 0050640 e e i f i t i s s i m p 0050660 l e o r m u l t i p l e . 0050700 T h i s i m p l e m e n t a 0050720 t i o n p e r m i t s a n 0050740 e v e n t s p e c i f i c a t 0050760 i o n t o r e f e r t o 0051000 a s i n g l e s i m p l e 0051020 e v e n t , o r t o s e v 0051040 e r a l e v e n t s , o r 0051060 t o a s i n g l e e v e n 0051100 t o r i g i n a l l y c o n 0051120 s t r u c t e d f r o m s e 0051140 v e r a l e v e n t s ( w h 0051160 i c h m a y t h e m s e l v 0051200 e s h a v e b e e n m u l 0051220 t i p l e i n p u t e v e n 0051240 t s , e t c . ) w i t h o u 0051260 t h a v i n g t o t r e a 0051300 t e a c h c a s e s e p a 0051320 r a t e l y . \r \r \r { p a c o m 0051340 R E D O } , { i n d e x R E 0051360 D O P A C o m } { p a c o m 0051400 R E T R Y } , { i n d e x R 0051420 E T R Y P A C o m } { p a c 0051440 o m U S E } , { i n d e x U 0051460 S E P A C o m } { p a c o m 0051500 . . . } , { i n d e x . . . 0051520 P A C o m } a n d { i n d 0051540 e x F I X P A C o m } { p a 0051560 c o m F I X } c o m m a n d 0051600 s , i . e . , t h o s e c 0051620 o m m a n d s t h a t r e e 0051640 x e c u t e p r e v i o u s 0051660 e v e n t s , a r e n o t 0051700 s t o r e d a s i n p u t s 0051720 , b e c a u s e t h e i n 0051740 p u t p o r t i o n f o r 0051760 t h e s e e v e n t s a r e 0052000 t h e e x p r e s s i o n s 0052020 t o b e " r e r e a d " . 0052040 T h e h i s t o r y c o 0052060 m m a n d s { i n d e x U N 0052100 D O P A C o m } { p a c o m 0052120 U N D O } , { i n d e x N A 0052140 M E P A C o m } { p a c o m 0052160 N A M E } , { i n d e x R E 0052200 T R I E V E P A C o m } { p a 0052220 c o m R E T R I E V E } , { 0052240 i n d e x B E F O R E P A C 0052260 o m } { p a c o m B E F O R E 0052300 } , a n d { i n d e x A F 0052320 T E R P A C o m } { p a c o m 0052340 A F T E R } { i t a r e } 0052360 r e c o r d e d a s i n p 0052400 u t s , a n d { p a c o m 0052420 ? ? } { i n d e x ? ? P A C 0052440 o m } p r i n t s t h e m 0052460 e x a c t l y a s t h e y 0052500 w e r e t y p e d . \r \r \r \r { 0052520 a r g P R O P S } i s a 0052540 p r o p e r t y l i s t o f 0052560 t h e f o r m \r { l i s p 0052600 ( { a r g P R O P E R T Y { s 0052620 u b 1 } } { a r g V A L U 0052640 E { s u b 1 } } { a r g P 0052660 R O P E R T Y { s u b 2 } } 0052700 { a r g V A L U E { s u b 2 0052720 } } { e l l i p s i s } ) } , 0052740 \r t h a t c a n b e u s e 0052760 d t o a s s o c i a t e a 0053000 r b i t r a r y i n f o r m a 0053020 t i o n w i t h a p a r t 0053040 i c u l a r e v e n t . \r C u 0053060 r r e n t l y , t h e f o l 0053100 l o w i n g p r o p e r t i e 0053120 s a r e u s e d b y t h 0053140 e p r o g r a m m e r ' s a 0053160 s s i s t a n t : \r \r \r { B e g 0053200 i n L a b e l e d L i s t e 0053220 v e n t p r o p e r t i e s } 0053240 \r \r \r { N a m e { l i s p S 0053260 I D E } { i n d e x * P R I M 0053300 A R Y * S I D E ( H i s t o 0053320 r y L i s t P r o p e r t y 0053340 ) } } \r { T e x t \r A l i s t 0053360 o f t h e s i d e e f f 0053400 e c t s o f t h e e v e n 0053420 t . S e e { f n U N D O 0053440 S A V E } , { P a g e R e f 0053460 F n U N D O S A V E } . \r \r { 0053500 n o t e s h o u l d i n f o 0053520 f r o m U N D O S A V E a 0053540 b o u t S I D E = N O S A V E 0053560 a n d # U N D O S A V E S 0053600 b e m o v e d h e r e ? ? } 0053620 \r } \r \r \r { N a m e { i n d e 0053640 x X { N a m e P R I N T } 0053660 { T y p e h i s t o r y l i 0053700 s t p r o p e r t y } { T e 0053720 x t { l i s p * P R I N T * 0053740 } } } { i n d e x * P R I M 0053760 A R Y * * P R I N T * ( h i 0054000 s t o r y l i s t p r o p e 0054020 r t y ) } { l i s p * P R I N 0054040 T * } } \r { T e x t \r U s e d 0054060 b y t h e { p a c o m ? ? 0054100 } c o m m a n d w h e n s 0054120 p e c i a l f o r m a t t i n 0054140 g i s r e q u i r e d , f 0054160 o r e x a m p l e , w h e n 0054200 p r i n t i n g e v e n t s 0054220 c o r r e s p o n d i n g t 0054240 o t h e b r e a k c o m m 0054260 a n d s { b r e a k c o m O 0054300 K } , { b r e a k c o m G O 0054320 } , { b r e a k c o m E V A 0054340 L } , a n d { b r e a k c o 0054360 m ? = } . \r } \r \r \r { N a m e 0054400 { l i s p U S E - A R G S } 0054420 { i n d e x * P R I M A R Y * 0054440 U S E - A R G S ( H i s t o 0054460 r y L i s t P r o p e r t y 0054500 ) } } \r { N a m e { i n d e x 0054520 X { N a m e A R G S } { T 0054540 y p e h i s t o r y l i s t 0054560 p r o p e r t y } { T e x t 0054600 { l i s p . . . A R G S } } 0054620 } { i n d e x * P R I M A R 0054640 Y * . . . A R G S ( h i s t 0054660 o r y l i s t p r o p e r t 0054700 y ) } { l i s p . . . A R G S 0054720 } } \r { T e x t \r T h e { l i 0054740 s p U S E - A R G S } a n d 0054760 { l i s p . . . A R G S } 0055000 p r o p e r t i e s a r e u 0055020 s e d t o s a v e t h e 0055040 a r g u m e n t s a n d e x 0055060 p r e s s i o n f o r t h e 0055100 c o r r e s p o n d i n g h 0055120 i s t o r y c o m m a n d . \r 0055140 } \r \r \r { N a m e { i n d e x 0055160 X { N a m e E R R O R } { 0055200 T y p e h i s t o r y l i s 0055220 t p r o p e r t y } { T e x 0055240 t { l i s p * E R R O R * } 0055260 } } { i n d e x * P R I M A 0055300 R Y * * E R R O R * ( h i s 0055320 t o r y l i s t p r o p e r 0055340 t y ) } { l i s p * E R R O R 0055360 * } } \r { N a m e { i n d e x 0055400 X { N a m e C O N T E X T } 0055420 { T y p e h i s t o r y l 0055440 i s t p r o p e r t y } { T 0055460 e x t { l i s p * C O N T E 0055500 X T * } } } { i n d e x * P 0055520 R I M A R Y * * C O N T E X T 0055540 * ( h i s t o r y l i s t 0055560 p r o p e r t y ) } { l i s p 0055600 * C O N T E X T * } } \r { T e x 0055620 t \r { l i s p * E R R O R * } 0055640 a n d { l i s p * C O N T 0055660 E X T * } a r e u s e d t 0055700 o s a v e i n f o r m a t i 0055720 o n w h e n e r r o r s o 0055740 c c u r f o r s u b s e q u 0055760 e n t u s e b y t h e { 0056000 p a c o m $ } c o m m a n d 0056020 . W h e n e v e r a n e 0056040 r r o r o c c u r s , t h e 0056060 o f f e n d e r i s a u t 0056100 o m a t i c a l l y s a v e d 0056120 o n t h a t e v e n t ' s 0056140 e n t r y i n t h e h i 0056160 s t o r y l i s t , u n d e 0056200 r t h e { l i s p * E R R 0056220 O R * } p r o p e r t y . \r \r 0056240 { n o t e * C O N T E X T * 0056260 ? ? } \r } \r \r \r { N a m e { i 0056300 n d e x X { N a m e L I S P 0056320 X P R I N T } { T y p e h i 0056340 s t o r y l i s t p r o p e 0056360 r t y } { T e x t { l i s p 0056400 * L I S P X P R I N T * } } 0056420 } { i n d e x * P R I M A R Y 0056440 * * L I S P X P R I N T * ( 0056460 h i s t o r y l i s t p r o 0056500 p e r t y ) } { l i s p * L I 0056520 S P X P R I N T * } } \r { T e x 0056540 t \r U s e d t o r e c o r d 0056560 c a l l s t o { i n d e x 0056600 L I S P X P R I N T F N } { 0056620 f n L I S P X P R I N T } , 0056640 { f n L I S P X P R I N 1 } , 0056660 e t c . ( s e e { P a g e 0056700 R e f F n L I S P X P R I N 0056720 T } ) . \r } \r \r { N a m e { i 0056740 n d e x X { N a m e A R C H 0056760 I V E } { T y p e h i s t o 0057000 r y l i s t p r o p e r t y 0057020 } { T e x t { l i s p * A 0057040 R C H I V E * } } } { i n d e 0057060 x * P R I M A R Y * * A R C 0057100 H I V E * ( h i s t o r y l 0057120 i s t p r o p e r t y ) } { l 0057140 i s p * A R C H I V E * } } \r 0057160 { T e x t \r T h e p r o p e r 0057200 t y { l i s p * A R C H I V 0057220 E * } o n a n e v e n t 0057240 c a u s e s t h e e v e n t 0057260 t o b e a u t o m a t i c 0057300 a l l y a r c h i v e d w h 0057320 e n i t " f a l l s o f f 0057340 t h e e n d " o f t h e 0057360 h i s t o r y l i s t ( s 0057400 e e { P a g e R e f P A C o 0057420 m A R C H I V E } ) . \r \r { n 0057440 o t e d o e s i t j u s t 0057460 h a v e t o b e o n P 0057500 R O P S , o r d o e s i t 0057520 h a v e t o h a v e v a 0057540 l u e T ? ? } \r } \r \r \r { N a 0057560 m e { i n d e x X { N a m e 0057600 G R O U P } { T y p e h i 0057620 s t o r y l i s t p r o p e 0057640 r t y } { T e x t { l i s p 0057660 * G R O U P * } } } { i n d 0057700 e x * P R I M A R Y * * G R 0057720 O U P * ( h i s t o r y l i 0057740 s t p r o p e r t y ) } { l i 0057760 s p * G R O U P * } } \r { N a 0060000 m e { i n d e x X { N a m e 0060020 H I S T O R Y } { T y p e 0060040 h i s t o r y l i s t p r o 0060060 p e r t y } { T e x t { l i 0060100 s p * H I S T O R Y * } } } 0060120 { i n d e x * P R I M A R Y * 0060140 * H I S T O R Y * ( h i s t 0060160 o r y l i s t p r o p e r t 0060200 y ) } { l i s p * H I S T O R 0060220 Y * } } \r { T e x t \r T h e { 0060240 l i s p * H I S T O R Y * } 0060260 a n d { l i s p * G R O U P 0060300 * } p r o p e r t i e s a r 0060320 e u s e d f o r c o m m a 0060340 n d s t h a t r e e x e c u 0060360 t e p r e v i o u s e v e n 0060400 t s , i . e . , { p a c o m 0060420 R E D O } , { p a c o m R 0060440 E T R Y } , { p a c o m U S 0060460 E } , { p a c o m . . . } , 0060500 a n d { p a c o m F I X } 0060520 . T h e v a l u e o f 0060540 t h e { l i s p * H I S T O 0060560 R Y * } p r o p e r t y i s 0060600 t h e h i s t o r y c o m 0060620 m a n d t h a t t h e u s 0060640 e r a c t u a l l y t y p e 0060660 d , e . g . , { l i s p R 0060700 E D O F R O M F } . T h 0060720 i s i s u s e d b y t h 0060740 e { p a c o m ? ? } c o m 0060760 m a n d w h e n p r i n t i 0061000 n g t h e e v e n t . T 0061020 h e v a l u e o f t h e 0061040 { l i s p * G R O U P * } p 0061060 r o p e r t y i s a s t r 0061100 u c t u r e c o n t a i n i n 0061120 g t h e s i d e e f f e c 0061140 t s , e t c . f o r t h e 0061160 i n d i v i d u a l i n p u 0061200 t s b e i n g r e e x e c u 0061220 t e d . T h i s s t r u c 0061240 t u r e i s d e s c r i b e 0061260 d b e l o w . \r } \r \r { E n d 0061300 L a b e l e d L i s t e v e 0061320 n t p r o p e r t i e s } \r \r 0061340 \r \r { n o t e w h e r e s h 0061360 o u l d t h e f o l l o w i 0061400 n g d i s c u s s i o n g o 0061420 ? ? n e a r H I S T O R Y S 0061440 A V E ? ? } \r \r \r W h e n { 0061460 f n L I S P X } i s g i v 0061500 e n a n i n p u t , i t 0061520 c a l l s { f n H I S T O R 0061540 Y S A V E } ( { P a g e R e f 0061560 F n H I S T O R Y S A V E } 0061600 ) t o r e c o r d t h e 0061620 i n p u t i n a n e w e 0061640 v e n t ( e x c e p t f o r 0061660 t h e c o m m a n d s { p 0061700 a c o m ? ? } , { p a c o m 0061720 F O R G E T } , { p a c o m 0061740 T Y P E - A H E A D } , { p 0061760 a c o m $ B U F S } , a n d 0062000 { p a c o m A R C H I V E } 0062020 , t h a t a r e e x e c u 0062040 t e d i m m e d i a t e l y 0062060 a n d a r e n o t r e c o 0062100 r d e d o n t h e h i s t 0062120 o r y l i s t ) . N o r m 0062140 a l l y , { f n H I S T O R 0062160 Y S A V E } c r e a t e s a 0062200 n d r e t u r n s a n e w 0062220 e v e n t . { i n d e x 0062240 L I S P X F N } { f n L I S 0062260 P X } b i n d s t h e v a 0062300 r i a b l e { v a r L I S P 0062320 X H I S T } { i n d e x * P R 0062340 I M A R Y * L I S P X H I S T 0062360 V a r } t o t h e v a l 0062400 u e o f { i n d e x H I S 0062420 T O R Y S A V E F N } { f n 0062440 H I S T O R Y S A V E } , s o 0062460 t h a t w h e n t h e o 0062500 p e r a t i o n h a s c o m 0062520 p l e t e d , { f n L I S P 0062540 X } k n o w s w h e r e t 0062560 o s t o r e t h e v a l u 0062600 e . N o t e t h a t b y 0062620 t h e t i m e i t c o m 0062640 p l e t e s , t h e o p e r 0062660 a t i o n m a y n o l o n 0062700 g e r c o r r e s p o n d t 0062720 o t h e m o s t r e c e n 0062740 t e v e n t o n t h e h 0062760 i s t o r y l i s t . F o 0063000 r e x a m p l e , a l l i 0063020 n p u t s t y p e d t o a 0063040 l o w e r b r e a k w i l 0063060 l a p p e a r l a t e r o 0063100 n t h e h i s t o r y l i 0063120 s t . A f t e r b i n d i 0063140 n g { v a r L I S P X H I S 0063160 T } , { f n L I S P X } e 0063200 x e c u t e s t h e i n p u 0063220 t , s t o r e s i t s v a 0063240 l u e i n t h e v a l u e 0063260 f i e l d o f t h e { v 0063300 a r L I S P X H I S T } e v 0063320 e n t , p r i n t s t h e 0063340 v a l u e , a n d r e t u r 0063360 n s . \r \r \r { T a g E v e n t 0063400 G r o u p } \r \r W h e n t h e 0063420 i n p u t i s a { p a c 0063440 o m R E D O } , { p a c o m 0063460 R E T R Y } , { p a c o m 0063500 U S E } , { p a c o m . . . 0063520 } , o r { p a c o m F I X 0063540 } c o m m a n d , t h e p 0063560 r o c e d u r e i s s i m i 0063600 l a r , e x c e p t t h a t 0063620 t h e e v e n t i s a l 0063640 s o g i v e n a { l i s p 0063660 * G R O U P * } p r o p e r 0063700 t y , i n i t i a l l y { l 0063720 i s p N I L } , a n d a 0063740 { l i s p * H I S T O R Y * } 0063760 p r o p e r t y , a n d { 0064000 f n L I S P X } s i m p l y 0064020 u n r e a d s t h e i n p 0064040 u t a n d r e t u r n s . 0064060 W h e n t h e i n p u t 0064100 i s " r e r e a d " , i t 0064120 i s { f n H I S T O R Y S A 0064140 V E } , n o t { f n L I S 0064160 P X } , t h a t n o t i c e 0064200 s t h i s f a c t , a n d 0064220 f i n d s t h e e v e n t 0064240 f r o m w h i c h t h e 0064260 i n p u t o r i g i n a l l y 0064300 c a m e . I f { i n d e 0064320 x H I S T O R Y S A V E F N 0064340 } { f n H I S T O R Y S A V E 0064360 } c a n n o t f i n d t h 0064400 e e v e n t , f o r e x a 0064420 m p l e i f a u s e r p 0064440 r o g r a m u n r e a d s t 0064460 h e i n p u t d i r e c t l 0064500 y , a n d n o t v i a a 0064520 h i s t o r y c o m m a n d 0064540 , { f n H I S T O R Y S A V 0064560 E } p r o c e e d s a s t 0064600 h o u g h t h e i n p u t 0064620 w e r e t y p e d . { f n 0064640 H I S T O R Y S A V E } t h 0064660 e n a d d s a n e w { l 0064700 i s p ( { a r g I N P U T } 0064720 { a r g I D } { a r g V 0064740 A L U E } . { a r g P R O 0064760 P S } ) } e n t r y t o t 0065000 h e { l i s p * G R O U P * 0065020 } p r o p e r t y f o r t 0065040 h i s e v e n t , a n d r 0065060 e t u r n s t h i s e n t r 0065100 y a s t h e " n e w e v 0065120 e n t . " { f n L I S P X 0065140 } t h e n p r o c e e d s 0065160 e x a c t l y a s w h e n 0065200 i t s i n p u t w a s t y 0065220 p e d d i r e c t l y , i . 0065240 e . , i t b i n d s { v a 0065260 r L I S P X H I S T } t o 0065300 t h e v a l u e o f { f n 0065320 H I S T O R Y S A V E } , e 0065340 x e c u t e s t h e i n p u 0065360 t , s t o r e s t h e v a 0065400 l u e i n { f n C A D D R 0065420 } o f { v a r L I S P X H 0065440 I S T } , p r i n t s t h e 0065460 v a l u e , a n d r e t u 0065500 r n s . I n f a c t , { 0065520 i n d e x L I S P X F N } { 0065540 f n L I S P X } n e v e r 0065560 n o t i c e s w h e t h e r 0065600 i t i s w o r k i n g o n 0065620 f r e s h l y t y p e d i 0065640 n p u t , o r i n p u t t 0065660 h a t w a s r e r e a d . 0065700 S i m i l a r l y , { i n d 0065720 e x U N D O S A V E F N } { 0065740 f n U N D O S A V E } w i l 0065760 l s t o r e u n d o i n f 0066000 o r m a t i o n o n { i n d 0066020 e x L I S P X H I S T V a r 0066040 } { v a r L I S P X H I S T } 0066060 t h e s a m e a s a l w 0066100 a y s , a n d d o e s n o 0066120 t k n o w o r c a r e t 0066140 h a t { v a r L I S P X H I 0066160 S T } i s n o t t h e e 0066200 n t i r e e v e n t , b u t 0066220 o n e o f t h e e l e m 0066240 e n t s o f t h e { l i s 0066260 p * G R O U P * } p r o p e 0066300 r t y . T h u s w h e n 0066320 t h e e v e n t i s f i n 0066340 i s h e d , i t s e n t r y 0066360 w i l l l o o k l i k e : 0066400 \r \r { l i s p c o d e \r ( { a r 0066420 g I N P U T } { a r g I D 0066440 } { a r g V A L U E } \r 0066460 * H I S T O R Y * \r 0066500 { a r g C O 0066520 M M A N D } \r * G R 0066540 O U P * \r 0066560 ( ( { a r g I N P U T { s u b 0066600 1 } } { a r g I D { s u b 0066620 1 } } { a r g V A L U E { 0066640 s u b 1 } } S I D E { a r 0066660 g S I D E { s u b 1 } } ) \r 0066700 ( { a r 0066720 g I N P U T { s u b 2 } } 0066740 { a r g I D { s u b 2 } } 0066760 { a r g V A L U E { s u b 2 0067000 } } S I D E { a r g S I D 0067020 E { s u b 2 } } ) \r 0067040 { e l l i p s i 0067060 s } ) ) } \r \r \r I n t h i s 0067100 c a s e , t h e v a l u e 0067120 f i e l d o f t h e e v e 0067140 n t w i t h t h e { l i s 0067160 p * G R O U P * } p r o p e 0067200 r t y i s n o t b e i n g 0067220 u s e d ; { i n d e x V A 0067240 L U E O F F N } { f n V A L 0067260 U E O F } i n s t e a d r e 0067300 t u r n s a l i s t o f 0067320 t h e v a l u e s f r o m 0067340 t h e { p r o p * G R O U P 0067360 * } p r o p e r t y . S i 0067400 m i l a r l y , { p a c o m 0067420 U N D O } o p e r a t e s b 0067440 y c o l l e c t i n g t h e 0067460 { i n d e x S I D E P r o 0067500 p } { p r o p S I D E } p r 0067520 o p e r t i e s f r o m e a 0067540 c h o f t h e e l e m e n 0067560 t s o f t h e { p r o p 0067600 * G R O U P * } p r o p e r t 0067620 y , a n d t h e n u n d o 0067640 i n g t h e m i n r e v e 0067660 r s e o r d e r . \r \r \r T h i 0067700 s i m p l e m e n t a t i o n 0067720 r e m o v e s t h e b u r 0067740 d e n f r o m t h e f u n 0067760 c t i o n c a l l i n g { i 0070000 n d e x H I S T O R Y S A V E 0070020 F N } { f n H I S T O R Y S 0070040 A V E } o f d i s t i n g u 0070060 i s h i n g b e t w e e n n 0070100 e w i n p u t a n d r e e 0070120 x e c u t i o n o f i n p u 0070140 t w h o s e h i s t o r y 0070160 e n t r y h a s a l r e a d 0070200 y b e e n s e t u p . \r \r 0070220 \r } { E n d S u b S e c F o 0070240 r m a t a n d U s e o f 0070260 t h e H i s t o r y L i s t 0070300 } \r \r \r \0 \0 \0 \0 \0 004 \0 002 \0 ? \0 1 0070320 ( D E F A U L T F O N T 1 ( 0070340 G A C H A 1 0 ) ( G A C H A 0070360 8 ) ( T E R M I N A L 8 ) 0070400 ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 ? \0 1 ( 0070420 D E F A U L T F O N T 1 ( G 0070440 A C H A 1 0 ) ( G A C H A 0070460 8 ) ( T E R M I N A L 8 ) ) 0070500 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \n r \0 \0 0070520 \0 \0 002 \0 \0 \0 \b \0 \0 \0 \0 001 \0 \0 f J 0070540 \0 \0 \0 \0 002 \0 \0 p 304 \0 003 z 272 0070555