;"M@(U*U*UPROGNCONDSTATUSNOFEATURENOLDMSGTERPRIMSGFILESPRINCPNPUTU*UjuQUOTE;Loading EXLIST 82pSETQxDEFPROPU:U*UT+INTERNAL-STRING-MARKER xALPHALESSPLISPV2071EXLIST82VERSIONU*U.UPUSHFUNCTIONLAMBDAXORFILE-EXIT-FUNCTIONS        xFEATURETOPS-20U*U.UPUTPROPSTUDNTPSKMP.TEACHPPNTEACHxBASEW*U*UIBASEx~%The function "EXAMINE-LIST" is deU*U*Usigned to help you learn about list operatorU*U*Us such as CONS, CAR, CDR, and LIST. The functU*U*Uion may be invoked with one argument, in whiU*U*Uch case the value of that argument is used asU*U*U the list to be examined. If no argument is U*U*Usuplied, EXAMINE-LIST will check to see if itU*U*U has on hand another list that you have lookU*U*Ued at, and will offer to reexamine  that one U*U*Ufor you (this option is chosen by typing NIL U*U*Uat that point) or will accept a new list to U*U*Uexamine.  Having gotten its argument, EXAMIU*U*UNE-LIST will first show you what its internalU*U*U representation as a tree looks like. Next U*U*Uit will tell you about how yout could have bU*U*Ueen constructed using only the CONS operator,U*U.whow it could have bg LIST.~% !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV6VWWXXYYZZ[[\ \]]^XXYY^_Mp__x_ xU( OUTPUTEXAMINE-LIST-DOCSUBR ,,8,8",<`,x%jU*U_ a*OLD-LIST*The last list you looked at waU*U*Us:~   ~2% ~N~   ~2%Shall I U*Unure-examine it for you?bbccddeeffgghhiijjkk pllxl xQUERYU*UnuFRESH-LINE~&Type in a list: mnnopooxo xRECORDED-READU*U*W?HELPThat's not a list! Want help?qrrsstpw*U*Uttxt x~2&Don't bother to quote it. That mU*U*Uakes it look messy...~  ~%I'll pretend yoU*Unuu didn't use quote.~%uuvvwwxxyyzzg{{||}}~~ px xEXAMINE-LIST-ARG-DEFAULTD7Ba+ ,,8,8,8",<l4B H" ,m a+ , ,8,8",<`AA ,p,81Bp+0Bq+ ,,8 &,8",<l4B`+(B{6 "+[`0B+ ,,8,8",<`0Z`[+ ,m `/,x"*UlotaFunction ET being inU;]*Uvoked.01px xPROGRAM-RECORDEXAMINE-LISTEXPLANATION-HAS-BEEN-SEEN~2&NIU*U*UL, or (), is a special thing to Maclisp. It iU*U*Us both an atom ~  ~%and an empty list. ThU*U*Ue CARCDR of NIL are both NIL! NIL is ~  ~U*U*U%alsofalse thing in Maclisp. In truth-value tU*U*wests, anything  ~%that iis true.~%           + rApxw;U*W xqrrsstpx x~&~S is not a list!~pw*U*Ux x%I'll pretend you didn't use quote.W;U*U~%uuvvwwxxyyzzh  !!"" p##x# xMAKE-DISPLAY-ARRAYMake-display-array fU*U*wailed. Examination of list aborted.$$%%&&''(()p))xu*U*U) x~2&Pick a small for this demo or I can'tU*U*U do all my nice~  ~%display stuff on yourU;]* terminal.**++,,--..//0011223" p33x3 xEXAMINE-NORMAL-LISTLSUBR-0 ,8 4n# Z(+#,8C ,&,8,8I",< "6@`++ ,+,8,8I",<`+H `(N{7 80AA+7 `1Bp+00Bq+4 ,2,8 &,8J",<l4B3`+H ,7,8,8J A,8",<`+H[`0B+? ,;,8 ,8K",<` ,?,8Zg[,8",P<+H $ `#5BG ,D,8,8KD",< ,F,8,8L",<`+H `D"4/,x#".U.U)3H4ARGS556 x*DISPLAY-TERMINAL*TYIU*U*UCLEAR-INPUTe any character when ready to continue.~w:T!m8899::;;p<<x< xCLEAR-SCREENCONTINUE-DISPLAY7B6+T 77 ,Q,8,8U",<` ,S,8,87",EKU<7<+U ",x<PaL~&The in qU*U*Uuestion is: ~ %  ~N ~  ~%Now we'll loU*U*Uok at how that's represented inside of MaclisU*U*wp as a ~ %chain of pointers.~2%=>>??@@AABBCCDDEEFFGGHHIIJJpKKxu*TK xDISPLAYPRINT-DOTTEDPRINT-CONSESPRINT-LISTS,8 ,Y,8,8^ f0,8",<`=K= `L `  L,X"MK@aVGOOD-LIST,8(B{7 0P +a "+i `-,,8 ` (N{7 8+g6@`g " +hZ`A@`] B`+c//,xXa^MAKE-FROM-LISTU(aLIST*CONS*CONS,8-,4B} `(N{d7 8+p `-, $-, 0+} `M4Bw[`N,8ZgN @0-,,X-, $N-,+}@0 `-, BO[`N,8ZgN @0-,,X-, $O-,/0.U*U,x`aj~&You could have formed your lU*]nWist with LIST by:~2%PPQQRRSSTTpUUxU x~N~%Upw*U*UVVxV x~2&A sequence of things in list-likU*U*Um that doesn't end in NIL is~  ~%not realU*U*Uly a list, be formed withoperator LIST, so~ U*U*U%they to be made with CONS instead. (Note thaU*U*Ut it's subforms ~ may use LIST if theypropeU*U*Urly fs.) An example of ~ ~%this, using a subfU*U*Worm of yout, is:~  ~2%~N =>~ 2%~N~VWWXXYYQZZ[[\\]]^^_ -_``+aabbc7cddeeffgghhi{ijjkkl`lmmn]nooppq6qrrsst%pw*U*Uttxt x~2&What you have typed in is not a U*U*Ut and so cannot be ~ ~%formed using LIST. A sU*U*Uequence ofgs in-like formdoesn't end in he opU*U*Uerator LIST, so(Note it'sorms  ~%lists.) YouU*U*Ur input is an example of this: =>~ ~2%~N~%w8uuvvwwxk6xyyzAz{{||}}~~(i{r^^_ -_`` k7cddeefi{(pijjkkl` irs A  ,p  x x,8M4B ,,8,8AD",<`-,O ,,8,8 gdN,8",<`7BO+ , ,8,8@,8N,8",<`+ ",@ + ,,8,8,8g g~N,8",D%<`/,xUVt Pa~U*U*Umore compressed notaually used, called the doU*U*Utted pair~  ~%notation. Note the stuff inU*U*U parentheses is~  ~%  " . " ~ %where is theU*U*U left hand side of the tree and ~ U*U*U ~%is the right hand side of the tree...~w:@V    *  Ah  !!""##$$%%Jp&&x& xPRINT-DOTTED-WORKER,8 ,,8,8", d]<` `&,X+&@a~Sw:]nW'p''x' x((p((x( x . )pw+]`))x) x)*p**x* x,8(B{7 0D+! , ,8,8+,8g",<`+* ,#,8,8,",<`[`& ,',8 ,8,",<`Z`& ,*,8,8-",D%<`/,x'()*$haU*U*U~2&You couve fothe lith CONS by: ~ ~2%  ~N~2w:@ ++],{,S--.]./p//x/ xPRINT-CONSES-WORKER,8 ,1,8,820 X,8",<`/,x/Ha-,8-,4B> `(N{7 8+9 ` -, $-,+>[`0,8A@ Zg0-,,X-, $O-,0p/,x&a3;