,,SNOBOL "<,/RI,NG ,ORI5T$ SYM,B,OLIC ,LANGUAGE"> IS A FAMILY ( PROGRAMM+ LANGUAGES BUILT AT ,BELL ,TELEPH"O ,LABORATORIES 2T #AIFB & #AIFG BY ,DAVID ,F>B]1 ,RALPH ,GRISWOLD1 & ,IVAN ,POLONSKY & ,ICON IS XS DIRECT DESC5DANT1 DESIGN$ BY ,GRISWOLD AT ! ,UNIV]S;Y ( ,>IZONA 9 #AIGG#GH4 ,2T !M !Y 9TRODUC$ TWO ( ! MO/ QUIETLY 3SEQU5TIAL ID1S 9 ! HI/ORY ( PROGRAMM+3 ! PATT]N Z A F/-CLASS DATA TYPE1 & GOAL-DIRECT$ EXECU;N DRIV5 BY G5]ATORS4 ,E PROGRAMM] :O HAS "E WRITT5 A REGUL> EXPRES.N1 OR CALL$ A ,PY?ON YIELD1 IS /&+ D[N/R1M ( ^! TWO LANGUAGES4 ,,SNOBOL#D1 ! MATURE =M1 0 ! MO/ P[];L TEXT-PROCESS+ LANGUAGE ( XS ]A >GUABLY ( ANY ]A4 ,X TR1T$ PATT]NS N Z /R+S ( CRYPTIC NOTA;N B Z /RUCTUR$ DATA T CD 2 BUILT1 /OR$1 PASS$ TO FUNC;NS1 & EV5 MODIFI$ :ILE A MAT* 0 9 PROGRESS4 ,XS MAT*] CD EXPRESS FULL ,BACKUS,NAUR =M GRAMM>S A CLASS ( PROBLEM PROVABLY 2Y ORD9>Y REGUL> EXPRES.NS1 : WD N ACQUIRE COMP>ABLE P[] = =TY YE>S4 ,ICON TOOK ! SAME 5G9E SU3ESS1 FAILURE1 & BACKTRACK+ & WRAPP$ X 9 ! ,,ALGOL-/YLE SYNTAX ! 9DU/RY _H LE>N$ TO EXPECT1 ADD+ ! G5]ATOR1 A 3/RUCT S NATURAL T ,PY?ON'S DESIGN]S CIT$ ,ICON BY "N :5 !Y ADOPT$ X 9 #BJJA4.1 LI/S ,ICON AM;G ! G5]ATORS' DIRECT 9SPIRA;NS4.>.> ,? >TICLE TELLS ! :OLE /ORY3 ! LANGUAGE XF1 XS HI/ORY & LIFE"T1 & ! 3CEPTS X GAVE ! _W PATT]N MAT*+1 GOAL-DIRECT$ PROGRAMM+1 G5]ATORS1 & ! 5TIRE TRADI;N ( /R+-PROCESS+ LANGUAGES T FOLL[$4 ,! _W 2F /R+S ,TO "U/& :AT ,,SNOBOL DID1 Y H TO REMEMB] :AT PROGRAMM+ LOOK$ L :5 X >RIV$4 ,! LANGUAGES ( ! #AIEJ;S 7 BUILT = NUMB]S4 ,,=TRAN "<#AIEG"> PROCESS$ >RAYS ( FLOAT+-PO9T VALUES2 XS /R+ H&L+ WAS1 *>ITABLY1 AN AF?"\ TEXT LIV$ 9 FIX$-L5G? FIELDS MANIPULAT$ "? =MAT /ATE;TS4 ,,COBOL "<#AIEI"> ?"\ 9 RECORDS3 FIX$-LAY\T R[S ( DATA = PAYROLL & 9V5TORY4 ,,ALGOL "<#AIEH1 #AIFJ"> GAVE ! _W BLOCK /RUCTURE & RECUR.N & ESS5TIALLY NO /R+S AT ALL4 ,B COMPUT]S 7 ALR DR[N+ 9 TEXT3 PROGRAMS !MVS1 DATA RECORDS1 NATURAL LANGUAGE4 ,! F/ P TO NOTICE 7 ! L+UI/S4 ,AT ,,MIT 9 #AIEG1 ,VICTOR ,YNGVE'S GR\P BUILT ,,COMIT1 ! F/ LANGUAGE DESIGN$ SPECIFICALLY TO MANIPULATE /R+S MOTIVAT$ BY ! DR1M ( MA*9E TRANSLA;N1 : 9 ^? OPTIMI/IC YE>S SEEM$ A FEW YE>S F SOLV$4 ,,COMIT TR1T$ TEXT Z "S?+ TO 2 REWRITT5 BY RULES3 MAT* A FRAG;T ( ! 9PUT AG/ A PATT]N1 REPLACE X ) "S?+ ELSE1 & REP1T4 ,T S+LE IDEA F9D ?1 REPLACE X ) T IS ! SE$ ( "EY?+ 9 ? >TICLE4 ,,COMIT 0 BRILLIANT & AWKW>D 9 R\LY LANGUAGE1 ,,TRAC "<#AIFD">1 PURSU$ MACROS & TEXT G5]A;N4 ,! /AGE 0 SET = "S"O TO D /R+ PROCESS+ PROP]LY & ! P :O DID 7 N L+UI/S AT ALL1 B RESE>*]S AT ! MO/ F]TILE LABORATORY 9 ! HI/ORY ( COMPUT+4 ,BELL ,TELEPH"O ,LABORATORIES 9 ! #AIFJ;S 0 A PLACE ": A RESE>*] CD 2 H&$ A PROBLEM1 A MA9FRAME1 & E6ECTIVELY NO SUP]VI.N4 ,! ,PROGRAMM+ ,RESE>* ,/UDIES DE"P;T AT ! ,HOLMDEL1 ,NEW ,J]SEY SITE SIX P SAT 9SIDE AN 9/ITU;N T 9 A S+LE DECADE PRODUC$ ! TRANSI/OR'S SU3ESSORS1 ,UNIX1 ;,C1 9=MA;N !ORY'S MATURE =M1 & HALF ! !ORETICAL F.DA;N ( ! DIGITAL C5TURY4 ,COMPUT+ "! M1NT PUN*$ C>DS1 BAT* QUEUES1 AN ,,IBM #GJIJ %>$ BY A BUILD+;L ( RESE>*]S1 & TURN>.D M1SUR$ 9 ! "T X TOOK TO WALK A C>D DECK TO ! MA*9E ROOM & F9D YR PR9T\T 9 A B94 ,9T]ACTIVE T]M9ALS 7 A RUMOR4 ,Y GOT A FEW %OTS A "D2 EA* "O _H TO C.T1 : IS PRECISELY ! 5VIRON;T 9 : D5SE1 EXPRESSIVE NOTA;N ?RIVES4 ,BELL ,LABS & ! BIR? ( ,,SNOBOL .95 8BI7E/ MIRROR "E0 ": ,,SNOBOL 0 BORN ".> ,9 ! FALL ( #AIFB1 ?REE MEMB]S ( ! SIX-P]SON ,PROGRAMM+ ,RESE>* ,/UDIES DE"P;T AT ,BELL ,LABS 9 ,HOLMDEL1 ,NEW ,J]SEY ,DAVID ,F>B]1 ,RALPH ,GRISWOLD1 & ,IVAN ,POLONSKY 7 FRU/RAT$4 ,_! ACTUAL "W 9VOLV$ ! SYMBOLIC MANIPULA;N ( POLYNOMIALS1 SYMBOLIC 9TEGRA;N1 & ! /UDY ( ,M>KOV *A9S4 ,_! TOOL 0 ,,SCL1 A LANGUAGE WRITT5 BY DE"P;T H1D ,*E/] ,LEE SL[1 L[-LEVEL1 & PRODUC+ 8VOLUMES ( CODE = EV5 SIMPLE PROJECTS40 ,!Y 3SID]$ ADOPT+ ,,COMIT1 F.D X WANT+1 & DID :AT ,BELL ,LABS P DID 9 T GOLD5 AGE3 !Y WROTE _! [N LANGUAGE4.1 & ! ,,HOPL PAP] ,GRISWOLD "<#AIHA"> ! /&>D PRIM>Y S\RCES ON ,,SNOBOL'S ORIG9S4.>.> ,! F/ V].NS RAN ON ! LAB'S ,,IBM #GJIJ MA9FRAME 9 E>LY #AIFC1 & BY SUMM] ! LANGUAGE 0 9 USE ACR ,BELL4 ,X _H "O DATA TYPE ! /R+ NO FUNC;NS1 NO DECL>A;NS1 ALM NO ]ROR 3TROL1 & A SYNTAX ( B1UTI;L SIMPLIC;Y3 E /ATE;T 0 A PATT]N MAT* ) AN OP;NAL REPLACE;T & AN OP;NAL BRAN*4 ,XS AU?ORS CALL$ X A P]SONAL TOOL4 ,TOOLS T GD N"E /AY P]SONAL4 ,,SEXI1 OR H[ ,,SNOBOL GOT XS "N ,! NAM+ /ORY IS "O ( COMPUT+'S GRT ANECDOTES1 TOLD BY ,F>B] HMF4 ,! T1M F/ SETTL$ ON ,,SEXI 8,SYMBOLIC ,E,XPRES.N ,9T]PRET]40 ,ALL W5T WELL UNTIL ! "D ,F>B] SUBMITT$ A BAT* JOB2 ON ! ,,JOB C>D1 9 /&>D ,BELL ,LABS /YLE1 HE PUN*$ ! PROGRAM "N & 8 [N3 ,,SEXI ,F>B]4 @> 8,"O ( ! ,COMP ,C5T] GIRLS LOOK$ AT X & SD1 ',T'S :AT Y ?9K4'0 ,A NEW "N 0 REQUIR$4 ,! T1M SAT1 TALK$1 DRANK C(FEE1 %OT RU2] B&S4 ,AF F> TOO L;G "S"O MO/ LIKELY ,RALPH SD !Y DIDN'T H 8A SN[BALL'S *.E 9 HELL0 ( F9D+ A "N4 ,! ROOM YELL$ AT ONCE3 ,,SNOBOL 9 ! _S ( ! ]A'S ,7-,,BOL0 LANGUAGES4 ,! EXPAN.N CAME AF3 ,/RI,NG ,ORI5T$ SYM,B,OLIC ,LANGUAGE1 A BACKRONYM /RET*$ Z F> Z X WD G4 ,! ?REE AU?ORS .B] 9 #BJJH CO-CR1TOR ( ,,SNOBOL1 LAT] 8! GR&"F ( ! ,9T]NET0 = 8 "W ON E>LY 4TRIBUT$ SY/EMS ".> ,! TRIO 2H ,,SNOBOL EA* W5T ON TO NOTABLE C>E]S4 ,DAVID ;,J4 ,F>B] LEFT ,BELL ,LABS = A L;G ACADEMIC C>E] AT ,,UC ,IRV9E1 ! ,UNIV]S;Y ( ,DELAW>E1 ,C>NEGIE ,MELLON1 & F9ALLY ! ,UNIV]S;Y ( ,P5NSYLVANIA1 ": HE 2CAME "O ( ! ELD]S ( COMPUT] NET"W+4 ,8 /UD5TS BUILT E>LY PIECES ( ! ,9T]NET'S 9FRA/RUCTURE2 ! COMMUN;Y NICK"ND HM1 ) A6EC;N1 A GR&"F ( ! ,9T]NET1 & 8 ,9T]E/+ ,P MAIL+ LI/ RAN = DECADES Z ! 9DU/RY'S BACK *ANNEL4 ,IVAN ;,P4 ,POLONSKY 3T9U$ AT ,BELL ,LABS 9 LANGUAGE RESE>*2 & ,RALPH ;,E4 ,GRISWOLD ! MEMB] ( ! TRIO = :OM /R+ LANGUAGES 2CAME A LIFE'S "W C>RI$ ,,SNOBOL TO ! ,UNIV]S;Y ( ,>IZONA 9 #AIGA & SP5T ! NEXT ?REE DECADES EXT5D+ ! FAMILY "? ,,SL#E1 ,ICON1 & ,UNICON4 ,HE DI$ 9 #BJJF1 HAV+ \-PUBLI%$1 \-IMPLE;T$1 & \-TAULY "EY"O 9 8 NI*E4 ,! ,,SNOBOL L91GE IS UNUSUAL 9 LANGUAGE HI/ORY = HAV+ A S+LE 3T9U\S /EW>D3 NE>LY E IDEA 9 ? >TICLE PASS$ "? "O MAN'S M9D1 TWICE1 TW5TY YE>S A"P4 ,! V].NS3 ,,SNOBOL #A "? #D ,,SNOBOL EVOLV$ QKLY & XS E>LY HI/ORY IS A LESSON 9 H[ LANGUAGES ACTUALLY GR[4 ,,SNOBOL#A "<#AIFB#FC"> 0 ! P]SONAL TOOL3 /R+ PROCESS+ ) PATT]N MAT*+ & REPLACE;T1 "O DATATYPE1 M9IMAL SYNTAX1 WRITT5 9 ,,IBM #GJIJ ASSEMBLY4 ,,SNOBOL#B "<,APRIL #AIFD"> ADD$ BUILT-9 FUNC;NS & ! ABIL;Y TO L9K 9 EXT]NAL ASSEMBLY CODE4 ,X 0 US$ MO/LY 9SIDE ,BELL1 ?\< X R1*$ Z F> Z ,,MIT'S ,PROJECT ,,MAC4 ,BUILT-9 FUNC;NS1 ONCE PRES5T1 IMMLY TAU SUPPLI$ EXACTLY T PROGRAMM]-DEF9$ FUNC;NS & 2CAME G5U9ELY POPUL>4 ,O!R SITES REIMPLE;T$ X = O!R MA*9ES1 & 9COMPATIBLE DIALECTS BLOOM$4 ,SU3ESS _H CR1T$ ! CLASSIC PROBLEM3 ! AU?ORS 7 2+ BUG-REPORT$ AG/ V].NS !Y N"E WROTE4 ,,SNOBOL#D "<#AIFG"> 0 ! ANSW] & ! MA/]PIECE4 ,! T1M DECID$ TO DEF9E ! LANGUAGE ONCE1 COMPLETELY1 & MAKE X RUN "EY": AN EXTRAORD9>Y DECI.N = #AIFG4 ,! 9T]PRET] 0 WRITT5 9 ASSEMBLY1 B "? ASSEMBL] MACROS X T>GET$ AN AB/RACT MA*9E3 ! ,,SNOBOL ,IMPLE;TA;N ,LANGUAGE1 OR ,,SIL1 A G5]ALIZA;N ( /R+-MANIPULA;N MACROS BY ,D\GLAS ,MC,ILROY ! SAME ,MC,ILROY :O 0 !N 9V5T+ PIPES D[N ! HALL4 ,TO PORT ,,SNOBOL#D1 Y REIMPLE;T$ ! ,,SIL MACROS ON YR MA*9E2 ! :OLE LANGUAGE CAME AL;G = FREE4 ,,SNOBOL#D 0 RUNN+ ON ! ,,IBM #CFJ 9 #AIFG & 0 RAPIDLY PORT$ ESS5TIALLY "EY":4 ,X IS "O ( ! E>LIE/ S]I\S VIRTUAL-MA*9E IMPLE;TA;NS 9 COMPUT+ HI/ORY ! ,,JVM'S ANCE/OR1 BY TWO DECADES4 ,X IS WOR? PAUS+ ON :AT ELSE EXI/$ 9 #AIFG1 2C ,,SNOBOL#D'S AMBI;N ONLY REGI/]S AG/ ! BACKDROP4 ,,=TRAN ,,IV 0 FIVE YE>S OLD4 ,,BASIC 0 ?REE4 ,,PL_/,I 0 NEW4 ,,ALGOL #FJ _H GIV5 ! _W RECUR.N & BLOCKS B NO /R+S TO SP1K (4 ,,LISP _H SYMBOLIC COMPUTA;N & XS [N EXOTIC SYNTAX2 ,PROLOG 0 / FIVE YE>S 9 ! FUTURE1 UNBUILT4 ,9TO T _W L&$ A LANGUAGE ) G>BAGE COLLEC;N1 A PORTABLE VIRTUAL MA*9E1 PROGRAMM]-DEF9$ DATATYPES1 ASSOCIATIVE >RAYS1 RUN"T CODE G5]A;N1 & A PATT]N FACIL;Y EQUIVAL5T TO 3TEXT-FREE GRAMM>S A F1TURE LI/ T R1DS L A #AIIJ;S SCRIPT+ LANGUAGE'S SALES PIT*1 %IPP$ :5 ! MOON L&+ 0 / TWO YE>S AWAY4 ,MC,ILROY /RUCK TWICE4 ,9 #AIFI HE 9SI/$ ,,SNOBOL#D ADD AN ASSOCIATIVE->RAY TYPE ! TABLE DECADES 2F 8HA% MAP0 OR 8DIC;N>Y0 2CAME E LANGUAGE'S /&>D F1TURE4 ,X >RIV$ & /AY$4 ,"U ! HOOD3 :AT ,,SNOBOL#D CD D ,2H ! FIVE-"P /ATE;T SAT AN UNUSUALLY MOD]N MA*9E4 ,,SNOBOL#D SUPPORT$ 9TEG]S1 LIMIT$-PRECI.N R1LS1 /R+S1 PATT]NS1 >RAYS1 TABLES1 & PROGRAMM]-DEF9$ DATATYPES ! ,,DATA FUNC;N LET A US] DCL RECORD TYPES ) "ND FIELDS1 A FACIL;Y COMP>ABLE TO ,,COBOL'S RECORDS & AH1D ( ,PASCAL'S4 ,"EY?+ LIV$ 9 A S+LE G>BAGE-COLLECT$ H1P AUTOMATIC MEMORY MANAGE;T ON A #AIFG MA9FRAME1 :5 MO/ LANGUAGES / TR1T$ MEMORY Z ! PROGRAMM]'S PROBLEM4 ,MO/ />TL+ ( ALL1 ,,SNOBOL#D /R+S CD 2 TURN$ 9TO PROGRAMS AT RUN"T4 ,,EVAL EVALUAT$ A /R+ Z AN EXPRES.N1 & ! ,,CODE FUNC;N TOOK A /R+ ( ,,SNOBOL S\RCE1 COMPIL$ X 9SIDE ! RUNN+ PROGRAM1 & RETURN$ X Z A CALLABLE VALUE EVAL-/YLE METAPROGRAMM+1 OR ,,JIT-COMPILA;N F ! US]'S S1T1 ON A MA*9E T CO/ MILLIONS & %>$ AN H\R AM;G DOZ5S ( US]S4 ,A PROGRAM CD WRITE A PROGRAM4 ,? PRODUC$ ! CELEBRAT$ ,,SNOBOL FOOT JOKE3 A PROGRAM T R1DS XS [N S\RCE1 /RIPS E L9E 3TA9+ ! LR ;E1 RUNS ! RESULT & AMPUTATES XF1 2C A S\RCE FILE ) E ;E REMOV$ IS A FOOT %ORT4 ,DR4 ,DOBB'S COMMEMORAT$ ! G5RE Z 8,PROGRAMS ,T ,TRANS=M ,_! ,[N ,S\RCE ,CODE02 ,,SNOBOL#D MADE S* SELF-MODIFICA;N R\T9E 5 TO JOKE AB4 ,! ,,SPITBOL EXT5.NS1 LAT] ABSORB$ 9TO E MOD]N IMPLE;TA;N1 PU%$ FUR!R /3 NE/$ 3DI;NAL EXPRES.NS1 IMM ASSIGN;T DUR+ MAT*+1 & ! ABIL;Y = A FUNC;N CALL$ MID-PATT]N TO ALT] ! PATT]N 2+ MAT*$4 ,A ,,SNOBOL#D PATT]N 0 LESS A QU]Y ?AN A LIVE COMPUTA;N ) SIDE E6ECTS ! PATT]N CD ?9K AB XF :ILE X RAN4 ,:AT A ,,SNOBOL PROGRAM LOOKS L ,,SNOBOL IS COLUMN-ORI5T$ A PUN*$-C>D-]A LANGUAGE & E /ATE;T HAS ! SAME FIVE "PS1 ALL OP;NAL3 . ,A LABEL M>KS A JUMP T>GET4 ,! SUBJECT IS ! /R+ "U EXAM9A;N2 ! PATT]N IS :AT TO MAT* AG/ X2 "7 OBJECT REPLACES :AT"E MAT*$2 & ! 3 TRANSF] S5DS 3TROL TO A LABEL ON SU3ESS 3;,S"<444">1 ON FAILURE 3;,F"<444">1 OR UNCONDI;NALLY4 ,T IS ! 5TIRE LANGUAGE'S 3TROL FL[3 "! IS NO IF1 NO :ILE1 NO = ONLY MAT*1 & BRAN* ON ! \TCOME4 ,,\TPUT "7 8,HELLO1 ,_W60 ,,5D ,HELLO ,_W IS "O ASSIGN;T TO ! PSEUDO-V>IABLE ,,\TPUT1 : PR9TS :AT"E IS ASSIGN$ TO X4 ,"S?+ ) A LL MO;N GREET ! US] DI6]5TLY BY 9ITIAL3 ,,\TPUT "7 8,:AT IS YR "N80 ,US]"N "7 ,,9PUT ,US]"N 8;,J0 3;,S"<,,LOVE"> ,US]"N 8;,K0 3;,S"<,,HATE"> ,,MEH ,,\TPUT "7 8,HI1 ,7 ,US]"N 3"<,,5D"> ,,LOVE ,,\TPUT "7 8,H[ NICE TO MEET Y1 ,7 ,US]"N 3"<,,5D"> ,,HATE ,,\TPUT "7 8,OH4 ,X'S Y1 ,7 ,US]"N ,,5D ,L9E ?REE MAT*ES ,US]"N AG/ ! PATT]N 8;,J0 IMPLICITLY AN*OR$1 S X MAT*ES ONLY IF ! "N 2G9S ) ;,J4 ,ON SU3ESS X JUMPS TO ,,LOVE2 O!RWISE X FALLS "? TO ! NEXT L9E4 ,! 3"<,,5D"> IS AN UNCONDI;NAL TRANSF]4 ,A PROGRAM T KEEPS R1D+ UNTIL ! 9PUT RUNS \ %[S ! IDIOM AT FULL /R5G? ,,L5"<#A"> IS A PATT]N T SU3E$S ONLY IF AT L1/ "O "* REMA9S3 ,,\TPUT "7 8,PRESS RETURN AL"O TO F9I%0 ,"N,C.T "7 #J 3"<,,GET9PUT"> ,,AG ,"N,C.T "7 ,"N,C.T "6 #A ,,\TPUT "7 8,"N ,7 ,"N,C.T ,73 ,7 ,P]SONAL,"N ,,GET9PUT ,,\TPUT "7 8,"N PL1SE3 ,7 ,P]SONAL,"N "7 ,,9PUT ,P]SONAL,"N ,,L5"<#A"> 3;,S"<,,AG"> ,,\TPUT "7 8,F9I%$4 ,7 ,"N,C.T ,7 "NS REQUE/$40 ,,5D .D ,,SNOBOL'S NATIVE HABITAT4 ,LABELS & ! 3 TRANSF] COLUMN >E A C>D-=MAT LANGUAGE'S GRAMM>.> ,X LOOKS ALI5 2C X IS ALI5 ? IS PROGRAMM+ Z A SEQU;E ( REWRITE RULES1 CLOS] 9 _S TO ,,COMIT & TO ,PROLOG'S CLAUSE LOGIC ?AN TO ANY?+ ,,ALGOL-%AP$4 ,! SAME FIVE-"P L9E H&LES PATT]N MAT*+1 SUB/ITU;N1 ,I_/,O1 & E 3DI;NAL & LOOP ! PROGRAM W "E NE$4 ,PATT]N MAT*+ ,PATT]N MAT*+ IS ,,SNOBOL'S R1SON TO EXI/1 & ! R1SON X / MATT]S4 ,! IDEA G5]ALIZES :AT A REGUL> EXPRES.N DOES F9D /RUCTURE 9 TEXT & LIFTS X 9TO ! LANGUAGE XF4 ,A ,,SNOBOL PATT]N IS A F/-CLASS DATA TYPE3 A VALUE L A /R+ OR A NUMB]1 /OR$ 9 V>IABLES1 PASS$ TO FUNC;NS1 RETURN$ F FUNC;NS1 3CAT5AT$ 9TO L>G] PATT]NS1 & BUILT AT RUN"T4 ,TWO OP]ATORS 3/RUCT !M3 3CAT5A;N " & ALT]NA;N "4 ,PATT]NS NE/ FREELY4 ,? LOOKS ORD9>Y N[ 2C ,JAVA,SCRIPT REGEX LIT]ALS & P>S] COMB9ATOR LIBR>IES MADE X ORD9>Y4 ,9 #AIFG X 0 A DECADE AH1D ( "EY"O4 ,! MAT*] XF IS A BACKTRACK+ 5G9E ! SAME ALGORI?MIC FAMILY Z ,PROLOG'S RESOLU;N1 DEVELOP$ 9 ! SAME YE>S4 ,TRY AN ALT]NATIVE2 IF ! MAT* LAT] FAILS1 BACK UP & TRY ! NEXT4 ,,SNOBOL#D PATT]NS C CAPTURE SUB/R+S DUR+ ! MAT* "IABLE B9DS ! MAT*$ TEXT">1 9VOKE US] FUNC;NS MID-MAT* T C /E] OR EV5 REWRITE ! PATT]N :ILE X RUNS1 & EXPRESS RECURSIVE /RUCTURES3 A PATT]N C 3TA9 A REF];E TO XF4 ,T LA/ PROP]TY IS ! CRUCIAL "O X LETS A ,,SNOBOL PATT]N DESCRIBE A FULL 3TEXT-FREE GRAMM>1 ! SAME CLASS Z ,BACKUS,NAUR =M4 ,A ,,SNOBOL PROGRAM CD IMPLE;T A LANGUAGE 9T]PRET] ALM DIRECTLY F XS PUBLI%$ ,,BNF2 A MACRO ASSEMBL] = A !ORETICAL MA*9E 0 REPORT$LY A FEW HUNDR$ L9ES1 ) EA* NEW 9/RUC;N CO/+ "O L9E4.Y #AIGC">1 #IA#AJJ ! =MAL TR1T;T E/ABLI%+ T ,,SNOBOL#D PATT]NS SUBSUME 3TEXT-FREE GRAMM>S4.>.> ,REGUL> EXPRES.NS1 BY 3TRA/1 >E REGUL> ! "N IS A !OREM1 N A DESCRIP;N4 ,!Y _C MAT* BAL.ED P>5^!S1 _C P>SE A GRAMM>1 _C RECURSE4 ,!Y 7 GD 5 = 8F9D TEXT L ?0 & S !Y WON ! POPUL> M>KET2 ,,AWK & LAT] ,P]L C>RI$ !M TO UBIQU;Y 9 ! #AIHJ;S & #IJ;S :ILE ,,SNOBOL'S RI*] MODEL FAD$ F T1*+4 ,ONLY 9 ,DECEMB] #BJJG1 ) RECURSIVE PATT]NS 9 ,P]L #E4AJ1 DID ! MA9/R1M F9ALLY ACQUIRE :AT ,,SNOBOL#D _H %IPP$ 9 #AIFG A =TY-YE> GAP 9 : ! LESS CAPABLE TOOL 0 SIMPLY ! FA%IONABLE "O4 "9 A ,,SNOBOL#D PATT]N = 8^W ^W0 A D\BL$ ^W "9 BUILT Z DATA1 MAT*$ Z /RUCTURE ,,TWO "7 ,,BR1K"<0 ,7"> 4 ,,F/ ,7 ,7 "9,,F/ ,,L9E 8! ! 5D0 ,,TWO 3;,S"<,,D\BLE"> ,,\TPUT "7 8NO D\BL$ ^W0 3"<,,5D"> ,,D\BLE ,,\TPUT "7 8D\BL$3 ,7 ,,F/ ,,5D ,"H ,,BR1K"<0 ,7"> 4 ,,F/ MAT*ES UP TO A SPACE & CAPTURES X 9TO ,,F/1 ,7 ,7 MAT*ES ! SPACE LIT]ALLY1 & "9,,F/ MAT*ES ! CAPTUR$ TEXT AG ! PATT]N R1DS L ! S5T;E X DESCRIBES4 ,A PRACTICAL P>S] = 8A COMPLETE "N & 9T]NA;NAL PO/AL MAIL+ ADDRESS0 ! EXAMPLE ! LIT]ATURE LIK$ TO GIVE IS EXPRESSIBLE ! SAME WAY1 & WAS4 ,! PRIMITIVE VOCABUL>Y ,R1L PATT]NS >E ASSEMBL$ F A SMALL VOCABUL>Y ( BUILT-9 MAT*]S1 EA* "O A G5]ATOR ( POSSIBLE SPANS3 ,PRIMITIVE ,MAT*ES ,,L5"<;N"> ANY ;N "*S ,,SPAN"<8#JABCDEFGHI0"> A RUN ( DIGITS L;GE/ POSSIBLE ,,BR1K"<0 40"> "EY?+ UP TO A SPACE OR P]IOD ,,ANY"<8AEI\0"> EXACTLY "O V[EL ,,NOTANY"<8#JAB0"> "O "* T IS N A DIGIT ,,>B ANY?+ ! RELUCTANT WILDC>D ,,REM ! REMA9D] ( ! /R+ ,,POS"<#J">1 ,,RPOS"<#J"> AN*OR$3 />T _/ 5D ( SUBJECT ,,BAL"<0"<">0"> A BAL.ED-P>5^!S EXPRES.N ! %[CASE RECURSIVE PRIMITIVE ,,FAIL1 ,,SU3E$1 ,,ABORT 3TROL ! MAT* 5G9E XF ,,BAL DES]VES ! SPOTLI EXPRES.NS1 & ,,SNOBOL#D %IPP$ X Z A BUILT94 ,COMB9$ ) 3DI;NAL CAPTURES PATT]N 4 V>IABLE B9DS TEXT ON SU3ESS1 PATT]N @S V>IABLE B9DS CURSOR POSI;N & ! ALT]NA;N_/3CAT5A;N OP]ATORS1 ! VOCABUL>Y SCALES F TOK5IZ+ A L9E TO P>S+ A LANGUAGE4 ,PATT]NS 2+ DATA1 A PROGRAM CD /ORE A LIBR>Y ( GRAMM> FRAG;TS 9 A TABLE & COMPOSE FULL P>S]S AT RUN"T3 ,,DIGIT "7 ,,ANY"<8#JABCDEFGHI0"> ,,9T "7 ,,POS"<#J"> ,,SPAN"<8#JABCDEFGHI0"> ,,RPOS"<#J"> ,,9PUT 8#DJIF0 ,,9T 3;,S"<,,IS9T"> ,,\TPUT "7 8N AN 9TEG]0 3"<,,5D"> ,,IS9T ,,\TPUT "7 89TEG]60 ,,5D ,SCALE T SAME TE*NIQUE TO A R1L GRAMM> & ! MA*9]Y %[S XS MUSCLE4 ,A DATE P>S] 8#BE ,DECEMB] #AGDE0 IS A H&;L ( PATT]N DEF9I;NS1 EA* R1DABLE Z :AT X DESCRIBES3 ,,DIGITS "7 8#JABCDEFGHI0 ,,"D "7 ,,POS"<#J"> ,,SPAN"<,,DIGITS"> 4 ;,N ,7 ,7 ,,MON?S "7 8,JANU>Y0 _\ 8,FEBRU>Y0 _\ 8,M>*0 _\ 8,APRIL0 "6 _\ 8,MAY0 _\ 8,JUNE0 _\ 8,JULY0 _\ 8,AUGU/0 "6 _\ 8,SEPTEMB]0 _\ 8,OCTOB]0 _\ 8,NOVEMB]0 _\ 8,DECEMB]0 ,,DATE "7 ,,"D ,,MON?S 4 ;,M ,7 ,7 ,,SPAN"<,,DIGITS"> 4 ;,Y ,,RPOS"<#J"> ,,9PUT ,,DATE 3;,S"<,,OK"> ,,\TPUT "7 8N A DATE0 3"<,,5D"> ,,OK ,,\TPUT "7 ;,N ,7 ( ,7 ;,M ,71 ,7 ;,Y ,,5D "6 3T9UES A DEF9I;N ON ! NEXT L9E4 ,! :OLE ?+ GRAMM> DEF9I;N1 MAT*1 CAPTURE1 & =MATT$ \TPUT FITS 9 A DOZ5 L9ES1 & ! PATT]N ,,DATE IS XF A VALUE T CD 2 /OR$1 COMB9$1 OR PASS$ ELSE":4 ,? IS ! DI6];E A F/-CLASS PATT]N TYPE MAKES3 A REGEX SOLU;N EMB$S ! SAME LOGIC Z "O UNR1DABLE /R+2 ! ,,SNOBOL V].N IS A GRAMM>1 COMPOS$ L A GRAMM>1 DEBU7$ L DATA4 ,TEXT PROCESS+ LANGUAGES ,,SNOBOL#D 2CAME ! CANONICAL TEXT-PROCESS+ LANGUAGE ! TOOL = ! JOBS ! NUM]IC LANGUAGES C\LDN'T SEE4 ,! PATT]N FIT A NI*E T 0 EXPLOD+ 9 ! #AIGJ;S3 ! DIGITAL HUMANITIES1 2F ! FIELD _H T "N4 ,HUMANI/S NE$$ TO 9DEX1 COLLATE1 TRANSLATE1 & TRANS=M TEXT AT SCALE 3CORD.ES1 /YLI/IC ANALYSIS1 MA*9E-TRANSLA;N EXP]I;TS1 CATALOGUES & ,,SNOBOL#D 0 ESS5TIALLY ! ONLY S]I\S 9/RU;T4 ,X 0 TAULY #AIGJ;S1 & US$ "? ! #AIGJ;S & #HJ;S2 ,SUSAN ,HOCKEY'S ,,SNOBOL ,PROGRAMM+ = ! ,HUMANITIES "<,CL>5DON ,PRESS1 #AIHE"> IS ! P]IOD'S /&>D TEXTBOOK4 ,XS SECOND HOME 0 LANGUAGE RESE>* XF3 COMPIL]S1 =MAL GRAMM>S1 & E>LY >TIFICIAL 9TELLIG;E ESPECIALLY MA*9E TRANSLA;N & NATURAL-LANGUAGE COMPREH5.N1 ^: RESE>* COMMUN;Y RAN ON ! ,,PDP-#AJ MA*9ES ": ,,SNOBOL#D LIV$ COM=TABLY4 ,! FILE $ITOR ( ! ,MI*IGAN ,T]M9AL ,SY/EM ADOPT$ ,,SNOBOL#D PATT]NS Z XS SE>* LANGUAGE AN $ITOR ^: REGEX EQUIVAL5T 0 A FULL GRAMM> 5G9E4 ,! T1*+ FOOTPR9T MATT]$ Z M* Z ! RESE>* "O4 ,A G5]A;N ( /UD5TS MET S]I\S /R+ H&L+ "? ,,SNOBOL#D 9 ! LATE #AIFJ;S & E>LY #GJ;S ! SAME YE>S _! 5G9E]+ CLASSMATES 7 MEET+ ,,=TRAN4 ,?REE BOOKS DID ! C>RY+3 ! 8GRE5 BOOK0 XF "<,GRISWOLD1 ,POAGE @& ,POLONSKY'S ,! ,,SNOBOL#D ,PROGRAMM+ ,LANGUAGE1 #AIFH1 ) XS FAM\SLY RIGOR\S-B-R1DABLE EXPOSI;N">1 ,GRISWOLD'S [N ,MACRO ,IMPLE;TA;N "<#AIGB"> = ! 9T]NALS-CURI\S1 & ,GIMPEL'S ,ALGORI?MS 9 ,,SNOBOL#D "<#AIGF">1 A G5U9E ALGORI?MS TEXT T HAPP5$ TO 2 WRITT5 9 A PATT]N LANGUAGE4 ,EMM]'S ,,SNOBOL#D"6 "<#AIHE"> C>RI$ ! LANGUAGE ONTO P]SONAL COMPUT]S1 & ,HOCKEY'S HUMANITIES TEXT 9TO SEM9> ROOMS ": ! MA*9E _H PREVI\SLY BE5 A PUN*-C>D CURIOS;Y4 ,= A NI*E LANGUAGE1 ,,SNOBOL#D 0 UNUSUALLY WELL-DOCU;T$ "O R1SON X / R1DS WELL TD4 ,! G5RE ,,SNOBOL#D DEF9$ HAS A RECOGNIZABLE G51LOGY AFW3 ,,AWK "<#AIGG1 AL F ,BELL ,LABS"> /R1ML9$ ! MAT*-&-ACT MODEL = L9E-AT-A-"T FILES2 ,P]L "<#AIHG"> FUS$ X ) REGEX & %ELL 3V5I;E 9TO ! WEB-]A GLUE LANGUAGE2 & E MOD]N 8TEXT MANIPULA;N0 FACIL;Y S$1 GREP1 ,PY?ON'S RE1 ,JAVA,SCRIPT'S REGEXES1 JQ LIVES "S": ON ! SPECTRUM ,,SNOBOL#D /AK$ \4 ,:Y ! BETT] TOOL LO/ ,X IS WOR? ASK+ PLA9LY :Y ,,SNOBOL#D FAD$ :ILE OBJECTIVELY W1K] TOOLS PROSP]$1 2C ! ANSW] IS A /&+ LESSON 9 LANGUAGE HI/ORY3 "9 ,SYNTAX C>RI$ ! ]A'S F+]PR9TS4 ,COLUMN LAY\T & LABEL-BRAN* FL[ 2L;G$ TO PUN*$ C>DS2 ONCE IF_/!N_/:ILE 2CAME ! 9DU/RY'S MUSCLE MEMORY1 ,,SNOBOL'S TRANSF] COLUMN R1D L ASSEMBLY4 "9 ,REGUL> EXPRES.NS 7 SMALL]4 ,= #IJ.0 ( R1L "W F9D ? /R+1 SPLIT ? L9E A COMPACT NOTA;N T FIT 9SIDE AN $ITOR B1T A GRAMM> 5G9E4 ,! M>KET = 8A COMPLETE "N & 9T]NA;NAL PO/AL MAIL+ ADDRESS0 0 R1L B N>R[4 "9 ,,AWK & ,P]L 7 FREE & ON ! MA*9E Y ALR _H4 ,UNIX MADE !M AMBI5T2 ,,SNOBOL#D REMA9$ A LANGUAGE Y 9/ALL$ DELIB]ATELY4 "9 ,NO *AMPION SURVIV$4 ,:5 ,GRISWOLD'S GR\P MOV$ ON TO ,ICON1 ,,SNOBOL LO/ XS RESE>* 5G9E4 ,P]L _H ,L>RY ,WALL WRIT+ ANNUAL ,/ATE ( ! ,ONION ADDRESSES2 ,,SNOBOL _H A LIBR>Y ( EXCELL5T BOOKS & NO M>KET+ DE"P;T4 ,! PATT]N RECURS "?\T ? 5CYCLOP$IA3 TE*NICAL SUP]IOR;Y LOSES TO 4TRIBU;N1 3V5;N1 & LUCK : IS EXACTLY :Y PRES]V+ ! K MATT]S4 ,! BETT] TOOL DIDN'T 4APPE>2 X J /OPP$ 2+ LOOK$ AT4 ..> ,IMPLE;TA;NS & DIALECTS ,! CLASSIC ,,SNOBOL#D RAN ON ! ,,PDP-#AJ SL[LY1 2C A PORTABLE 9T]PRET] PAYS 9 CYCLES4 ,JAMES ,GIMPEL FIX$ T TWICE4 ,9 #AIGB1 AT ,BELL ,LABS ,HOLMDEL1 HE DESIGN$ ,,SITBOL1 A NATIVE ,,PDP-#AJ IMPLE;TA;N1 & US$ X Z ! SEME/] PROJECT = A /R+-PROCESS+ C\RSE AT ,/EV5S ,9/ITUTE ( ,TE*NOLOGY "3 /UD5TS EA* IMPLE;T$ A SLICE 9 ,,PDP-#AJ ASSEMBL]1 & ! F9I%$ 9T]PRET] 0 A FULL-F1TUR$1 HI<-P]=M.E ,,SNOBOL#D4 ,GIMPEL'S GR1T] "W 0 ,,SPITBOL ! COMPIL$ IMPLE;TA;N T GAVE ,,SNOBOL#D NE>-NATIVE SPE$ & 2CAME ! REF];E IMPLE;TA;N = DECADES2 AF YE>S Z A COMM]CIAL ,CATSPAW PRODUCT1 ,,SPITBOL 0 REL1S$ Z FREE S(TW>E "U ! ,,GNU ,,GPL 9 ,APRIL #BJJI4. & ,,SPITBOL'S HI/ORY "? XS .<#BJJI ,,GPL REL1SE4.>.> ,! ECOSY/EM PRODUC$ XS [N ODD *N4 ,SNO/ORM "<#AIGJ;S1 ,FR$ ,SW>TZ1 ,UNIV]S;Y ( ,MI*IGAN"> 0 A PREPROCESSOR ADD+ /RUCTUR$-PROGRAMM+ 3/RUCTS TO ,,SNOBOL = ,,MTS SITES4 ,SNOC"O "<,&REW ,KO5IG1 #AIHE"> W5T FUR!R A SELF-3TA9$ BLOCK-/RUCTUR$ LANGUAGE ON ,,SNOBOL SEMANTICS4 ,M9NESOTA ,,SNOBOL#D BY ,VIKTORS ,B]/IS REPRODUC$ ! ,,IBM MA9FRAME ORIG9AL MO/ FAI?;LLY ON ,P,CS1 D[N TO ,=TRAN-/YLE ,,=MAT SUPPORT4 ,CATSPAW1 ,9C4 SOLD COMM]CIAL PORTS = ,,DOS1 ,MAC9TO%1 ,SUN & ,,RS_/#FJJJ ALL N[ FREE4 ,,GNU'S ,ADA COMPIL] C>RIES ,,GNAT4,SPITBOL1 ! ,,SPITBOL /R+ SEMANTICS CALLABLE F ,ADA4 ,& ! LANGUAGE RUNS TD3 ,MACRO ,,SNOBOL#D BY ,PHIL ,BUDNE & ! ,,BSD-LIC5S$ ,,CSNOBOL#D PORT KEEP ! ORIG9AL ,BELL ,LABS IMPLE;TA;N COMPIL+ ":V] ;,C EXI/S4 .* COMMUN;Y ".> ,GRISWOLD GOES WE/3 ,,SL#E ,9 ,AUGU/ #AIGA1 ,RALPH ,GRISWOLD LEFT ,BELL ,LABS = A PR(ESSOR%IP AT ! ,UNIV]S;Y ( ,>IZONA1 BR++ ,,SNOBOL#D ) HM & ,NA;NAL ,SCI;E ,F.DA;N SUPPORT TO KEEP EVOLV+ X4 ,BY !N ! LANGUAGE'S DESIGN DEBTS 7 OBVI\S4 ,XS COLUMN =MAT & LABEL-DRIV5 BRAN*+ 2L;G$ TO ! PUN*$-C>D AGE2 /RUCTUR$ PROGRAMM+ IF_/!N1 :ILE1 BLOCKS _H 2COME TABLE /AKES S9CE ,,ALGOL #FJ4 ,,SNOBOL#D'S SEMANTICS 7 BRILLIANT & XS SYNTAX 0 D1D4 ,GRISWOLD'S F/ ATTEMPT AT A SU3ESSOR1 ,,SL#E "<8,,SNOBOL ,LANGUAGE #E10 #AIGG">1 TRI$ TO GRAFT ! SU3ESS_/FAILURE MA*9]Y ONTO 3V5;NAL 3TROL /RUCTURES4 ,HE JUDG$ ! RESULT A FAILURE ! ME*ANISMS F"\ EA* O!R4 ,9 #AIGG HE W5T BACK TO F/ PR9CIPLES & SET ! 3/RA9TS = ! R1L SU3ESSOR3 KEEP ,,SNOBOL#D'S PHILOSOPHICAL & SEMANTIC BASIS2 TAKE ,,SL#E'S SYNTAX & XS F1TURES2 DROP ! OV]-G5]AL PROC$URE ME*ANISM4.1 & ,GRISWOLD @& ,GRISWOLD1 ,! ,ICON ,PROGRAMM+ ,LANGUAGE1 #CRD $4 ON ,,SL#E'S LESSONS & ,ICON'S DESIGN 3/RA9TS4.>.> ,! NEW LANGUAGE 0 ,,SNOBOL#E = A :ILE1 B X _H DRIFT$ TOO F> F ! "N4 ,!Y 3SID]$ ;S AN HOMAGE TO ;C1 A SIBL+ TRIBUTE TO ;,C & AB&ON$ X Z UNTYPESETTABLE4 ,IRV+ & B>D 7 PROPOS$ & DROPP$2 8,,TL0 8,! ,LANGUAGE0 0 TOO COY4 ,!N ,X]OX ,,P>C'S GRAPHICAL-9T]FACE "W PUT ! ^W ICON 9TO ! COMPUT] LEXICON1 & ! "N 0 *OS5 A DECI.N ,GRISWOLD LAT] REGRETT$1 S9CE 8ICON0 _H NO GRAPHICAL F1TURES :AT"E & ! "N 3FUS$ "EY"O X ATTRACT$4 ,ICON ,ICON "<#AIGH"> IS ! IDEA ( ,,SNOBOL REBUILT = ! /RUCTUR$-PROGRAMM+ ]A3 ,PASCAL-FLAVOR$ SYNTAX "<3"71 PROC$URE1 5D"> ) ,C'S BRACES & A MA9 PROC$URE1 DYNAMICALLY TYP$1 NO DECL>A;NS1 AUTOMATIC 3V].N 2T NUMB]S & /R+S4 ,ON ! SURFACE X LOOKS L A PL1SANT SCRIPT+ LANGUAGE ( XS DECADE4 ,"UN1? X RUNS ! /RANGE/ & MO/ ELEGANT 3TROL MODEL ANY MA9/R1M-ADJAC5T LANGUAGE HAS "E %IPP$4 ,GOAL-DIRECT$ PROGRAMM+ ,9 3V5;NAL LANGUAGES A LOOKUP T F9DS NO?+ RETURNS A S5T9EL -#A1 NULL1 ,,E( & ! PROGRAMM] WRITES TE/S "EY":3 IF "1 :ILE "<"<;C "7 R1D"<">"> 6"7 ,,E(">4 ,9 ,,SNOBOL1 AN OP]A;N T C\LDN'T PRODUCE A RESULT FAIL$1 & ! 3;,S"<444">_/3;,F"<444"> TRANSF]S /E]$ EXECU;N BY X4 ,ICON KEEPS ! SEMANTIC AN EXPRES.N SU3E$S ) A VALUE1 OR FAILS & WIRES X 9TO ORD9>Y /RUCTUR$ SYNTAX4 IF1 :ILE1 E1 & FRS >E ALL DRIV5 BY SU3ESS & FAILURE R ?AN BY ,BOOL1N TE/S4 ,! PAY(F IS 3CRETE4 ,FILE-COPY+ 9 ,JAVA REQUIRES ! ,,E( S5T9EL & AN EXPLICIT COMP>ISON2 9 ,ICON X IS3 :ILE WRITE""> R1D"<"> PRODUCES A L9E1 OR FAILS AT 5D ( FILE2 FAILURE PROPAGATES "? WRITE 9TO :ILE1 : /OPS CORRECTLY1 SIL5TLY1 BY DESIGN4 ,COMP>ISONS "W ! SAME WAY3 A @< ;B IS AN OP]ATOR T SU3E$S & RETURNS ;B1 OR FAILS S A @< ;B @< ;C DOES EXACTLY :AT X LOOKS L1 S9CE ! F/ COMP>ISON H&S XS SECOND OP]& TO ! SECOND4 ,& FAILURE IS N AN EXCEP;N3 R1*+ 5D ( FILE IS AN EXPECT$ \TCOME1 N A ?R[N EM]G5CY4 ,ICON SIMPLY DECL9$ ! S5T9EL-&-TE/ 9DU/RY T O3UPI$ E O!R LANGUAGE ( XS G5]A;N4 ,BACKTRACK+ COMPLETES ! PICTURE3 :5 A BRAN* FAILS1 ,ICON C REW9D TO AN E>LI] PO9T & TRY ANO!R ALT]NATIVE & REV]SIBLE ASSIGN;T "<@<-1 @<-@>"> EXI/S S T V>IABLES *ANG$ 9SIDE A FAIL$ COMPUTA;N RE/ORE !MVS1 A BUILT-9 ATOMIC;Y T /R+ SCANN+ RELIES ON 3/ANTLY3 _< I @<- #AJ @& ;J @<- F9D" _> ,IF F9D FAILS1 ! BLOCK FAILS & I @<- #AJ ROLLS XF BACK1 L1V+ NO PHANTOM ASSIGN;T 2H4 ,9 A LANGUAGE )\T REV]SIBIL;Y1 A FAIL$ P>SE ATTEMPT L1VES ! CURSOR ":V] ! ATTEMPT AB&ON$ X1 & ! NEXT ATTEMPT />TS F A CORRUPT /ATE4 ,ICON'S SCAN EI COMMITS XS CURSOR MOVE;T OR UNDOES X1 : IS EXACTLY ! SEMANTICS A BACKTRACK+ P>S] WANTS & EXACTLY :AT E H&-WRITT5 REGEX LOOP GETS SUBTLY WR;G4 ,"O M 3TROL-FL[ SUBTLETY SEP>ATES ,ICON F E NEIE N4 :ILE ;E RE-EVALUATES ;E UNTIL X FAILS XS JOB IS REPETI;N4 E ;E DRIVES A G5]ATOR1 FET*+ ! NEXT RESULT ON EA* PASS XS JOB IS 5UM]A;N4 E WRITE" & :ILE >E ! DI6];E 2T 8GIVE ME "EY?+ ? C PRODUCE0 & 8KEEP DO+ ? UNTIL X /OPS "W+40 ,! 4T9C;N MATT]S 2C AN ,ICON PROGRAMM] IS ALW ASK+ ! SAME "Q3 DOES ? EXPRES.N / H "S?+ TO GIVE8 ,G5]ATORS ,IF GOAL-DIRECT$ EXECU;N IS ,ICON'S 5G9E1 ! G5]ATOR IS XS GR1TE/ EXPORT4 ,9 ,ICON1 AN EXPRES.N DOESN'T EVALUATE TO A VALUE X PRODUCES A RESULT SEQU;E3 E VALUE X CD PRODUCE1 YIELD$ "O AT A "T TO :AT"E ASK$4 F9D"<8!01 ;S"> DOESN'T RETURN ! F/ POSI;N ( 8!0 & /OP2 X G5]ATES POSI;NS #D1 !N #BI & :5 X HAS NO M TO GIVE1 X FAILS4 ,! E 3/RUCT 3SUMES A SEQU;E3 ;S 3"7 8,ALL ! _W'S A /AGE4 ,& ALL ! M5 & WOM5 M]ELY PLAY]S0 E WRITE""> ,TWO L9ES1 & E O3URR;E IS PR9T$ NO 9DEX V>IABLE1 NO -#A S5T9EL1 NO LOOP BOOKKEEP+4 ,": O!R LANGUAGES' 9DEX,( REQUIRES A ?REE-P>AMET] OV]LOAD & A H&-ROLL$ LOOP1 ,ICON'S G5]ATOR SIMPLY KEEPS ANSW]+ UNTIL X C'T4 ,US] PROC$URES 2COME G5]ATORS ) SUSP5D1 : YIELDS A VALUE & P>KS EXECU;N MID-PROC$URE UNTIL RESUMP;N A RETURN T DOESN'T DE/ROY /ATE3 PROC$URE ,ITO,J" :ILE I @<"7 ;J D _< SUSP5D I I "63"7 #A _> FAIL 5D ,CALL ,ITO,J"<#A1 #E"> "U E & X YIELDS #A1 SUSP5DS2 RESUMES1 YIELDS #B2 & S ON1 UNTIL FAIL 5DS ! SEQU;E4 ,ADD ! ALT]NATOR _\ : LOOKS L OR B ACTUALLY G5]ATES XS OP]&S 9 TURN & TO = 9TEG] RANGES1 & IT]A;N COLLAPSES TO 9T5T3 E WRITE"<#A TO #AJ"> E I 3"7 "<#A _\ #C _\ #D _\ #E _\ #AJ _\ #AA _\ #BC"> D WRITE" E ;X 3"7 ,ITO,J"<#J1AJ"> @& ;X .0 #B "7"7 #J D WRITE"<;X"> _? EV5S ONLY . YIELDS RESULTS "O AT A "T2 E 3SUMES !M2 @&FAIL 5DS ! LOOP CL1NLY.> ,IF ? S.DS L ,PY?ON'S YIELD1 T'S 2C X IS4 ,:5 ,PY?ON ADOPT$ G5]ATORS 9 ,,PEP #BEE "<#BJJA">1 XS AU?ORS LI/$ ,ICON AM;G ! DIRECT 9SPIRA;NS ! ME*ANISM A G5]A;N ( ,PY?ON PROGRAMM]S "K Z LAZI;S 0 RUNN+ 9 ,TUCSON TWO DECADES E>LI]4 ,! SAME ,,DNA SURFACES 9 JQ'S /R1M SEMANTICS & ! ,ICON-DESC5D$ ,GOALDI4 ,G5]ATORS >E N[ ! /&>D ANSW] TO 8IT]ATE )\T MAT]IALIZ+02 ,ICON 0 ! PRO( ( 3CEPT1 COMPLETE ) ! COR\T9E MA*9]Y " T MOD]N LANGUAGES / WRAP 9 IT]ATORS & ASYNC4..> ,/R+ SCANN+ ,ICON'S ?IRD PILL> IS ! /R+ SCANN+ 5VIRON;T3 ;S 8 EXPR B9DS ;S Z ! SUBJECT = A BLOCK ( /R+ OP]A;NS1 ) TWO IMPLICIT V>IABLES @&SUBJECT & @&POS " DO+ ! BOOKKEEP+ T /R+ P>S+ ALW MAKES EXPLICIT4 ,9SIDE 81 FUNC;NS L TAB "1 _M "1 UPTO "1 MAT* "1 & POS " COMPOSE 9TO P>S]S ( />TL+ BREV;Y4 ,^WS F A L9E3 ;S 8 _< :ILE N POS"<#J"> D _< TAB"<_M"<' '">"> _? SKIP BLANKS ^W 3"7 TAB" _\ #J"> _? GRAB UP TO ! NEXT BLANK OR 5D WRITE"<^W"> _> _> ,! SAME MA*9]Y T P[]$ ,,SNOBOL#D PATT]NS SU3ESS1 FAILURE1 CURSOR BACKTRACK+ IS ALL "H1 J RECA/ 9 FUNC;NS ON AN IMPLICIT SUBJECT 9/1D ( A PATT]N DATATYPE4 ,AN ,ICON /R+ SCANN+ BLOCK = A R1L GRAMM> "SES DATE /R+S L 8,MON ,DEC #H0 ) A TW5TY-L9E MAT*]"> IS ! L91L DESC5DANT ( ,,SNOBOL'S ,,BNF-Z-PATT]N1 TRAD$ D[N 9 RAW P[] = A L>GE GA9 9 R1DABIL;Y4 ,! PAY(F %[S MO/ CLE>LY 9 ! CLASSIC UTIL;Y PROGRAM A ^W-FREQU5CY C.T]1 ! K9D ( ?+ AWK P WRITE TO %[ (F4 ,9 ,ICON ! :OLE JOB IS TW5TY L9ES & MO/ ( X IS ! SORT+3 PROC$URE MA9"<"> C.TS 3"7 TABLE"<#J"> _? DEFAULT VALUE #J = NEW KEYS E L9E 3"7 6@&9PUT D _< _? G5]ATOR R1DS ! /R1M L9E 8 :ILE TAB""> D _< C.TS.">.> "63"7 #A _> _> PAIRS 3"7 .<.> E ^W 3"7 KEY" D PU%".>"> E ;P 3"7 6PAIRS D WRITE"<"R"<;P.<#B.>1#F">1 ,7 ,71 ;P.<#A.>"> 5D TABLE"<#J"> IS A MAP ^: MISS+ KEYS DEFAULT TO Z]O2 KEY G5]ATES ! TABLE'S KEYS2 ! SCANN+ BLOCK WALKS EA* L9E PULL+ ALPHABETIC ^WS4 ,NO REGEX LIT]ALS1 NO SPLIT_/JO9 C]EMONY ! SAME JOB T TAKES A PAGE 9 MO/ LANGUAGES' /&>D /YLE IS A P>AGRAPH "H1 & ! P>AGRAPH IS / R1DABLE4 ,/RUCTURES & /R+S ,ICON'S COLLEC;NS 7 EQUALLY PRESCI5T3 LI/S USABLE Z >RAYS1 /ACKS1 & QUEUES2 TABLES ! ASSOCIATIVE >RAYS ,MC,ILROY =C$ 9TO ,,SNOBOL#D1 "H A F/-CLASS CITIZ52 SETS ) UNION "6"61 9T]SEC;N .*1 DI6];E --2 & CSETS"91 "* SETS L @&DIGITS1 @&LCASE1 & US]-DEF9$ 'AEI\'1 BUILT = ! SCANN+ OP]A;NS4 ,/R+S >E 9DEXABLE 2T"9 "*S "1 SLIC1BLE F EI 5D1 & MUTABLE "? _! SUBSCRIPTS ;S.<#B.> 3"7 8#ABC0 9S]TS 9TO ! MIDDLE ( 8ABC04 ,"EY?+ IT]ABLE IS A G5]ATOR1 D[N TO 6LI/ PRODUC+ A LI/'S ELE;TS & 68,HELLO0 PRODUC+ A /R+'S "*S4 ,EV5 @&9PUT /&>D 9PUT IS A G5]ATOR3 E PU%".* R1DS A :OLE /R1M 9TO A LI/ 9 "O EXPRES.N4 ,= COMPLETE;S1 ,ICON AL %IPP$ CO-EXPRES.NS F/-CLASS COR\T9E OBJECTS T CAPTURE A SUSP5D$ COMPUTA;N & C 2 RESUM$ EXPLICITLY ) @A4 ,G5]ATORS GET _! VALUES = FREE1 9 LEXICAL ORD]2 A CO-EXPRES.N GETS !M ON DEM&1 F ":V] Y L1 MAK+ X ! G5]AL ME*ANISM 2N SUSP5D & ! DIRECT ANCE/OR ( ! COR\T9E_/YIELD MA*9]Y MOD]N LANGUAGES EXPOSE DIRECTLY4 ,X IS "O M CASE ( ,ICON QUIETLY %IPP+ 9 #AIGH :AT O!R LANGUAGES WD SP5D ! NEXT F\R DECADES R$ISCOV]+ PIECEM1L F/ Z IT]ATORS1 !N Z G5]ATORS1 !N Z ASYNC4 ,,SNOBOL#D & ,ICON SIDE BY SIDE ,,SNOBOL#D "<#AIFG"> ,ICON "<#AIGH"> ,SURFACE ,COLUMN-=MAT1 LABELS & 3,S_/3;,F TRANSF]S ,,ALGOL_/,PASCAL-FLAVOR$ BLOCKS1 PROC$URE1 3"7 ,3TROL MODEL SU3ESS_/FAILURE BRAN*+ SU3ESS_/FAILURE "EY": GOAL-DIRECT$ ,PATT]N FACIL;Y PATT]NS Z F/-CLASS DATA1 FULL 3TEXT-FREE P[] /R+ SCANN+3 81 @&SUBJECT1 @&POS1 TAB_/_M_/UPTO ,IT]A;N MANUAL LOOPS VIA TRANSF]S G5]ATORS E1 TO1 1 61 SUSP5D ,DATA /R+S1 NUMB]S1 >RAYS1 TABLES1 ,,DATA RECORDS LI/S1 TABLES1 SETS1 CSETS1 RECORDS1 CO-EXPRES.NS ,! TRADE MAXIMUM EXPRESSIVE P[] MO/ ( ! P[]1 DRESS$ = ! /RUCTUR$-PROGRAMM+ ]A ,! TWO >E N RIVALS B /AGES ( "O IDEA3 ,,SNOBOL#D PROV$ T MAT*+ & FAILURE CD 2 A PROGRAMM+ LANGUAGE2 ,ICON PROV$ T IDEA CD WE> ! CLO!S ( A NORMAL "O4 ,CRITICISMS ,AN H"O/ A3.T HAS TO 9CLUDE :AT W5T WR;G4 ,LAUR;E ,TRATT'S #BJAJ ANALYSIS ( ,ICON'S DESIGN IS ! /&>D CRITICAL TEXT1 & XS TWO MA9 F9D+S >E 9/RUCTIVE4. ! /&>D DESIGN CRITIQUE4.>.> ,F/1 ! DEFAULT-FAIL 3V5;N3 A PROC$URE T RUNS (F XS 5D RETURNS @&FAIL4 ,ELEGANT = G5]ATORS1 X MAKES ;X 3"7 ;F"<-#A"> A SIL5T NO-OP ;X KEEPS XS OLD VALUE1 NO W>N+ & ,TRATT F.D ! VA/ MAJOR;Y ( R1L ,ICON PROC$URES >E N G5]ATORS1 S ! LANGUAGE'S DEFAULT 2HAVIOR OPTIMIZES = ! M9OR;Y CASE :ILE CR1T+ A SUBTLE TRAP 9 ! MAJOR;Y4 ,SECOND1 ! ABS;E ( ,BOOL1N LOGIC CR1TES $GE CASES ( XS [N3 IF ;C !N 444 SU3E$S EV5 :5 ;C 0 N"E ASSIGN$1 2C AN UNASSIGN$ V>IABLE'S VALUE "<@&NULL"> IS / A VALUE S ! TE/ M/ 2 WRITT5 IF _/C !N 444 OR ;C "7"7"7 @&NULL4 ,ICON TRAD$ ,BOOL1N COMPLEX;Y = FAILURE PROPAGA;N1 & MO/LY WON B N "EY":1 & N FREE4 ,! FAIR SUMM>Y IS ! "O ,ICON'S [N COMMUN;Y R1*ES3 = ! DOMA9 X 0 BUILT = /R+S1 SCANN+1 SE>* GOAL-DIRECT$ CODE IS %ORT]1 CLE>]1 & H>D] TO GET WR;G ?AN ANY?+ 2F OR S9CE4 ,= G5]AL-PURPOSE PROGRAMM+1 ! SAME RULES O3A.NALLY SURPRISE4 ,! IDEA 0 TOO GD = XS M$IUM4 ,UNICON & TD ,ICON'S L91GE 3T9UES4 ,UNICON " ADDS OBJECTS1 NET"W+1 DATABASES1 & 3CURR5CY TO ! CORE LANGUAGE & REMA9S ACTIVELY DEVELOP$4 ,! REF];E ,ICON IMPLE;TA;N XF IS / MA9TA9$ REL1SE #I4E4BE;A %IPP$ 9 ,SEPTEMB] #BJBE1 =TY-SEV5 YE>S AF ! LANGUAGE 0 DESIGN$4 ,,SNOBOL#D RUNS ":V] ,,CSNOBOL#D COMPILES2 ,GRISWOLD'S IMPLE;TA;N & BOOKS REMA9 AVAILABLE2 & ! ,UNIV]S;Y ( ,>IZONA KEEPS ! ,ICON PROJECT PAGES T ! LANGUAGE'S RESE>*]S BUILT4 ,^! LANGUAGES >E N SPECIM5S "U GLASS4 ,!Y COMPILE1 !Y RUN1 & _! MA9TA9]S / %IP REL1SES4 ,RUNN+ X TD ,E IMPLE;TA;N M5;N$ "H IS FREE3 ,,SNOBOL#D ,,CSNOBOL#D "<,,BSD-LIC5S$ PORT ( ! ,BELL ,LABS ORIG9AL1 BUILDS ANY": ;,C EXI/S">1 ,MACRO ,,SNOBOL#D "<,PHIL ,BUDNE'S PORTABLE ;,C IMPLE;TA;N">1 ,,SPITBOL "<,,GPL S9CE #BJJI1 ! FA/E/ BY F>">1 & ! FAI?;L ,M9NESOTA ,,SNOBOL#D"9 = ,,PC-]A FIDEL;Y4 ,! CLE>+H\SE IS SNOBOL#D4ORG2 ! PRES]VA;N MIRROR IS REGRESSIVE4ORG_/SNOBOL#D4 ,ICON ! REF];E IMPLE;TA;N F ! ,UNIV]S;Y ( ,>IZONA ,ICON PROJECT "IZONA4$U_/ICON">1 PLUS ,JCON = ! ,,JVM4 ,! ,GRISWOLDS' ,! ,ICON ,PROGRAMM+ ,LANGUAGE"9 "<#CRD $41 #BJJB"> IS ! BOOK1 & ! ,>IZONA SITE HO/S ! DOCU;TA;N SET4 "9 ,UNICON UNICON4ORG1 = ,ICON ) OBJECTS1 ,,POSIX FACILITIES1 & A /&>D LIBR>Y ! ORIG9AL N"E NE$$4 ,! CLASSIC TEXTS REMA9 F9DABLE3 ! 8GRE5 BOOK0 ,GRISWOLD1 ,POAGE @& ,POLONSKY1 ,! ,,SNOBOL#D ,PROGRAMM+ ,LANGUAGE "<#AIFH"> ,GRISWOLD'S ,! ,MACRO ,IMPLE;TA;N ( ,,SNOBOL#D "<#AIGB"> = ! VIRTUAL-MA*9E 9T]NALS1 ,GIMPEL'S ,ALGORI?MS 9 ,,SNOBOL#D "<#AIGF">1 & ,HOCKEY'S ,,SNOBOL ,PROGRAMM+ = ! ,HUMANITIES "<#AIHE"> = ! P]IOD'S APPLI$ TRADI;N4 ,GRISWOLD'S [N 8,A ,HI/ORY ( ! ,,SNOBOL ,PROGRAMM+ ,LANGUAGES0 "<#AIGH"> & ! ,,HOPL VOLUME *APT] >E ! PRIM>Y-S\RCE HI/ORY ? >TICLE L1NS ON !M "?\T4 ,LANGUAGE HI/ORY3 :AT ! L9E TAUS "<,,COMIT'S REWRITE RULES">1 IS P]FECT$ 9 A =M ! MA9/R1M C'T ABSORB "<,,SNOBOL#D'S PATT]N DATATYPE ON A #AIFG MA9FRAME">1 IS R$ISCOV]$ 9 DILUT$ =M BY FA%IONABLE SU3ESSORS "<,,AWK'S PATT]NS1 ,P]L'S REGEXES">1 & IS F9ALLY RE-EMB$D$ S QUIETLY T XS US]S N"E LE>N ": X CAME F "<,PY?ON'S YIELD1 JQ'S /R1MS1 E P>S]-COMB9ATOR LIBR>Y ON ,E>?">4 ,"! IS A SUBTL] LESSON 9 ! L91GE1 TOO3 ID1S P]SI/ BETT] ?AN IMPLE;TA;NS4 ,,SNOBOL#D ! >TIFACT IS A CURIOS;Y COLUMN-=MAT1 MA9FRAME-B.D1 XS IDIOMS EXT9CT4 ,B ! IDEA ! >TIFACT C>RI$ TURN$ \ TO 2 LOAD-BE>+4 ,X SURVIV$ A SYNTAX *ANGE "<,ICON">1 SURVIV$ 2+ R5AM$ "1 SURVIV$ 2+ DILUT$ "1 & SURFAC$ AG E "T ! 9DU/RY R$ISCOV]$ T TEXT IS MO/ ( :AT COMPUT]S ACTUALLY PROCESS4 ,:5 ,LUA'S DESIGN]S WROTE _! ,,HOPL HI/ORY1 !Y LI/$ ,,SNOBOL AM;G _! LANGUAGE'S 9FLU;ES ! PATT]N TRADI;N R1*+ EV5 ! EMB$DABLE-SCRIPT+ NI*E BY WAY ( XS REPUTA;N4 ,:5 ,/EPH5 ,B\RNE NE$$ A ,UNIX %ELL SCRIPT+ LANGUAGE 9 ! SAME ,BELL ,LABS BUILD+ ": ,,SNOBOL 0 MADE1 ! RESULT1 BS1 BORR[$ ,,SNOBOL-FLAVOR$ F1TURES \T"R4 ,! FAMILY T\*ES NE>LY E /R+-H&L+ IDIOM 9 DAILY USE4 ,?REE ( ! MOD]N PROGRAMM]'S DAILY TOOLS DESC5D DIRECTLY F ? FAMILY3 "9 ,PATT]N MAT*+ ,,SNOBOL#D DEF9$ ! PROBLEM SPACE REGUL> EXPRES.NS / O3UPY1 & XS 3TEXT-FREE P[] REMA9S 2Y /OCK REGEX =TY-FIVE YE>S LAT]4 "9 ,G5]ATORS ,ICON'S SUSP5D_/RESUME IS ,PY?ON'S YIELD1 & ! LAZY SEQU;E IS N[ H[ ! 9DU/RY ?9KS AB IT]A;N4 "9 ,GOAL-DIRECT$ EVALUA;N SU3ESS_/FAILURE Z A 3TROL PRIMITIVE PREVIEWS TD'S RESULT TYPES & E>LY-RETURN /YLES "<,RESULT 9 ,RU/1 ]R "7"7 NIL 9 ,G"> ! SAME 9/9CT3 MAKE FAILURE A VALUE1 & LET ! PROGRAM /E] BY X4 ,! LANGUAGES !MVS1 M1N:ILE1 SIMPLY P]SI/$ MA9TA9$1 PORT$1 FREE1 & / TAUM4 ,! GRE5 BOOK IS / R1DABLE4 ,! ,,SPITBOL S\RCE / COMPILES4 ,! ,>IZONA ,ICON PAGES / S]VE4 ,,SNOBOL & ,ICON >E AM;G ! BE/-PRES]V$ LANGUAGES ( _! G5]A;N DOCU;T$ BY _! [N AU?ORS1 9 _! [N ^WS1 ) ! S\RCE / RUNNABLE4 ,T IS :AT PRES]VA;N LOOKS L :5 X "WS4 ,K IS ONLY "E LO/ :5 ! _W /OPS LOOK+ & PAGES L ? "O EXI/ TO MAKE SURE X DOESN'T4 ,SEE AL "9 ,,=TRAN ! NUM]IC _W ,,SNOBOL ANSW]$ TO "9 ,ADA " ,,GNAT4,SPITBOL C>RIES ,,SNOBOL#D'S SEMANTICS 9TO ,ADA "9 ,HI/ORY ( ,PROGRAMM+ ! L>G] MAP ? L91GE 2L;GS TO "9 ,*EVALI] DE ,SA9T-,GEORGES ON PRES]V+ P HI/ORY NE>LY LO/2 LANGUAGES DES]VE ! SAME "9 ,,REBOL ! MESSAG+ BRAN* ( ! SAME DATA-IS-CODE TRADI;N