cl.texi 202 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211
  1. \input texinfo @c -*-texinfo-*-
  2. @setfilename ../../info/cl.info
  3. @settitle Common Lisp Extensions
  4. @include docstyle.texi
  5. @include emacsver.texi
  6. @copying
  7. This file documents the GNU Emacs Common Lisp emulation package.
  8. Copyright @copyright{} 1993, 2001--2017 Free Software Foundation, Inc.
  9. @quotation
  10. Permission is granted to copy, distribute and/or modify this document
  11. under the terms of the GNU Free Documentation License, Version 1.3 or
  12. any later version published by the Free Software Foundation; with no
  13. Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
  14. and with the Back-Cover Texts as in (a) below. A copy of the license
  15. is included in the section entitled ``GNU Free Documentation License''.
  16. (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
  17. modify this GNU manual.''
  18. @end quotation
  19. @end copying
  20. @dircategory Emacs lisp libraries
  21. @direntry
  22. * CL: (cl). Partial Common Lisp support for Emacs Lisp.
  23. @end direntry
  24. @finalout
  25. @titlepage
  26. @sp 6
  27. @center @titlefont{Common Lisp Extensions}
  28. @sp 4
  29. @center For GNU Emacs Lisp
  30. @sp 1
  31. @center as distributed with Emacs @value{EMACSVER}
  32. @sp 5
  33. @center Dave Gillespie
  34. @center daveg@@synaptics.com
  35. @page
  36. @vskip 0pt plus 1filll
  37. @insertcopying
  38. @end titlepage
  39. @contents
  40. @ifnottex
  41. @node Top
  42. @top GNU Emacs Common Lisp Emulation
  43. @insertcopying
  44. @end ifnottex
  45. @menu
  46. * Overview:: Basics, usage, organization, naming conventions.
  47. * Program Structure:: Arglists, @code{cl-eval-when}.
  48. * Predicates:: Type predicates and equality predicates.
  49. * Control Structure:: Assignment, conditionals, blocks, looping.
  50. * Macros:: Destructuring, compiler macros.
  51. * Declarations:: @code{cl-proclaim}, @code{cl-declare}, etc.
  52. * Symbols:: Property lists, creating symbols.
  53. * Numbers:: Predicates, functions, random numbers.
  54. * Sequences:: Mapping, functions, searching, sorting.
  55. * Lists:: Functions, substitution, sets, associations.
  56. * Structures:: @code{cl-defstruct}.
  57. * Assertions:: Assertions and type checking.
  58. Appendices
  59. * Efficiency Concerns:: Hints and techniques.
  60. * Common Lisp Compatibility:: All known differences with Steele.
  61. * Porting Common Lisp:: Hints for porting Common Lisp code.
  62. * Obsolete Features:: Obsolete features.
  63. * GNU Free Documentation License:: The license for this documentation.
  64. Indexes
  65. * Function Index:: An entry for each documented function.
  66. * Variable Index:: An entry for each documented variable.
  67. * Concept Index:: An entry for each concept.
  68. @end menu
  69. @node Overview
  70. @chapter Overview
  71. @noindent
  72. This document describes a set of Emacs Lisp facilities borrowed from
  73. Common Lisp. All the facilities are described here in detail. While
  74. this document does not assume any prior knowledge of Common Lisp, it
  75. does assume a basic familiarity with Emacs Lisp.
  76. Common Lisp is a huge language, and Common Lisp systems tend to be
  77. massive and extremely complex. Emacs Lisp, by contrast, is rather
  78. minimalist in the choice of Lisp features it offers the programmer.
  79. As Emacs Lisp programmers have grown in number, and the applications
  80. they write have grown more ambitious, it has become clear that Emacs
  81. Lisp could benefit from many of the conveniences of Common Lisp.
  82. The @dfn{CL} package adds a number of Common Lisp functions and
  83. control structures to Emacs Lisp. While not a 100% complete
  84. implementation of Common Lisp, it adds enough functionality
  85. to make Emacs Lisp programming significantly more convenient.
  86. Some Common Lisp features have been omitted from this package
  87. for various reasons:
  88. @itemize @bullet
  89. @item
  90. Some features are too complex or bulky relative to their benefit
  91. to Emacs Lisp programmers. CLOS and Common Lisp streams are fine
  92. examples of this group. (The separate package EIEIO implements
  93. a subset of CLOS functionality. @xref{Top, , Introduction, eieio, EIEIO}.)
  94. @item
  95. Other features cannot be implemented without modification to the
  96. Emacs Lisp interpreter itself, such as multiple return values,
  97. case-insensitive symbols, and complex numbers.
  98. This package generally makes no attempt to emulate these features.
  99. @end itemize
  100. This package was originally written by Dave Gillespie,
  101. @file{daveg@@synaptics.com}, as a total rewrite of an earlier 1986
  102. @file{cl.el} package by Cesar Quiroz. Care has been taken to ensure
  103. that each function is defined efficiently, concisely, and with minimal
  104. impact on the rest of the Emacs environment. Stefan Monnier added the
  105. file @file{cl-lib.el} and rationalized the namespace for Emacs 24.3.
  106. @menu
  107. * Usage:: How to use this package.
  108. * Organization:: The package's component files.
  109. * Naming Conventions:: Notes on function names.
  110. @end menu
  111. @node Usage
  112. @section Usage
  113. @noindent
  114. This package is distributed with Emacs, so there is no need
  115. to install any additional files in order to start using it. Lisp code
  116. that uses features from this package should simply include at
  117. the beginning:
  118. @example
  119. (require 'cl-lib)
  120. @end example
  121. @noindent
  122. You may wish to add such a statement to your init file, if you
  123. make frequent use of features from this package.
  124. Code that only uses macros from this package can enclose the above in
  125. @code{eval-when-compile}. Internally, this library is divided into
  126. several files, @pxref{Organization}. Your code should only ever load
  127. the main @file{cl-lib} file, which will load the others as needed.
  128. @node Organization
  129. @section Organization
  130. @noindent
  131. The Common Lisp package is organized into four main files:
  132. @table @file
  133. @item cl-lib.el
  134. This is the main file, which contains basic functions
  135. and information about the package. This file is relatively compact.
  136. @item cl-extra.el
  137. This file contains the larger, more complex or unusual functions.
  138. It is kept separate so that packages which only want to use Common
  139. Lisp fundamentals like the @code{cl-incf} function won't need to pay
  140. the overhead of loading the more advanced functions.
  141. @item cl-seq.el
  142. This file contains most of the advanced functions for operating
  143. on sequences or lists, such as @code{cl-delete-if} and @code{cl-assoc}.
  144. @item cl-macs.el
  145. This file contains the features that are macros instead of functions.
  146. Macros expand when the caller is compiled, not when it is run, so the
  147. macros generally only need to be present when the byte-compiler is
  148. running (or when the macros are used in uncompiled code). Most of the
  149. macros of this package are isolated in @file{cl-macs.el} so that they
  150. won't take up memory unless you are compiling.
  151. @end table
  152. The file @file{cl-lib.el} includes all necessary @code{autoload}
  153. commands for the functions and macros in the other three files.
  154. All you have to do is @code{(require 'cl-lib)}, and @file{cl-lib.el}
  155. will take care of pulling in the other files when they are
  156. needed.
  157. There is another file, @file{cl.el}, which was the main entry point to
  158. this package prior to Emacs 24.3. Nowadays, it is replaced by
  159. @file{cl-lib.el}. The two provide the same features (in most cases),
  160. but use different function names (in fact, @file{cl.el} mainly just
  161. defines aliases to the @file{cl-lib.el} definitions). Where
  162. @file{cl-lib.el} defines a function called, for example,
  163. @code{cl-incf}, @file{cl.el} uses the same name but without the
  164. @samp{cl-} prefix, e.g., @code{incf} in this example. There are a few
  165. exceptions to this. First, functions such as @code{cl-defun} where
  166. the unprefixed version was already used for a standard Emacs Lisp
  167. function. In such cases, the @file{cl.el} version adds a @samp{*}
  168. suffix, e.g., @code{defun*}. Second, there are some obsolete features
  169. that are only implemented in @file{cl.el}, not in @file{cl-lib.el},
  170. because they are replaced by other standard Emacs Lisp features.
  171. Finally, in a very few cases the old @file{cl.el} versions do not
  172. behave in exactly the same way as the @file{cl-lib.el} versions.
  173. @xref{Obsolete Features}.
  174. @c There is also cl-mapc, which was called cl-mapc even before cl-lib.el.
  175. @c But not autoloaded, so maybe not much used?
  176. Since the old @file{cl.el} does not use a clean namespace, Emacs has a
  177. policy that packages distributed with Emacs must not load @code{cl} at
  178. run time. (It is ok for them to load @code{cl} at @emph{compile}
  179. time, with @code{eval-when-compile}, and use the macros it provides.)
  180. There is no such restriction on the use of @code{cl-lib}. New code
  181. should use @code{cl-lib} rather than @code{cl}.
  182. There is one more file, @file{cl-compat.el}, which defines some
  183. routines from the older Quiroz @file{cl.el} package that are not otherwise
  184. present in the new package. This file is obsolete and should not be
  185. used in new code.
  186. @node Naming Conventions
  187. @section Naming Conventions
  188. @noindent
  189. Except where noted, all functions defined by this package have the
  190. same calling conventions as their Common Lisp counterparts, and
  191. names that are those of Common Lisp plus a @samp{cl-} prefix.
  192. Internal function and variable names in the package are prefixed
  193. by @code{cl--}. Here is a complete list of functions prefixed by
  194. @code{cl-} that were @emph{not} taken from Common Lisp:
  195. @example
  196. cl-callf cl-callf2 cl-defsubst
  197. cl-letf cl-letf*
  198. @end example
  199. @c This is not uninteresting I suppose, but is of zero practical relevance
  200. @c to the user, and seems like a hostage to changing implementation details.
  201. The following simple functions and macros are defined in @file{cl-lib.el};
  202. they do not cause other components like @file{cl-extra} to be loaded.
  203. @example
  204. cl-evenp cl-oddp cl-minusp
  205. cl-plusp cl-endp cl-subst
  206. cl-copy-list cl-list* cl-ldiff
  207. cl-rest cl-decf [1] cl-incf [1]
  208. cl-acons cl-adjoin [2] cl-pairlis
  209. cl-pushnew [1,2] cl-declaim cl-proclaim
  210. cl-caaar@dots{}cl-cddddr cl-first@dots{}cl-tenth
  211. cl-mapcar [3]
  212. @end example
  213. @noindent
  214. [1] Only when @var{place} is a plain variable name.
  215. @noindent
  216. [2] Only if @code{:test} is @code{eq}, @code{equal}, or unspecified,
  217. and @code{:key} is not used.
  218. @noindent
  219. [3] Only for one sequence argument or two list arguments.
  220. @node Program Structure
  221. @chapter Program Structure
  222. @noindent
  223. This section describes features of this package that have to
  224. do with programs as a whole: advanced argument lists for functions,
  225. and the @code{cl-eval-when} construct.
  226. @menu
  227. * Argument Lists:: @code{&key}, @code{&aux}, @code{cl-defun}, @code{cl-defmacro}.
  228. * Time of Evaluation:: The @code{cl-eval-when} construct.
  229. @end menu
  230. @node Argument Lists
  231. @section Argument Lists
  232. @cindex &key
  233. @cindex &aux
  234. @noindent
  235. Emacs Lisp's notation for argument lists of functions is a subset of
  236. the Common Lisp notation. As well as the familiar @code{&optional}
  237. and @code{&rest} markers, Common Lisp allows you to specify default
  238. values for optional arguments, and it provides the additional markers
  239. @code{&key} and @code{&aux}.
  240. Since argument parsing is built-in to Emacs, there is no way for
  241. this package to implement Common Lisp argument lists seamlessly.
  242. Instead, this package defines alternates for several Lisp forms
  243. which you must use if you need Common Lisp argument lists.
  244. @defmac cl-defun name arglist body@dots{}
  245. This form is identical to the regular @code{defun} form, except
  246. that @var{arglist} is allowed to be a full Common Lisp argument
  247. list. Also, the function body is enclosed in an implicit block
  248. called @var{name}; @pxref{Blocks and Exits}.
  249. @end defmac
  250. @defmac cl-iter-defun name arglist body@dots{}
  251. This form is identical to the regular @code{iter-defun} form, except
  252. that @var{arglist} is allowed to be a full Common Lisp argument
  253. list. Also, the function body is enclosed in an implicit block
  254. called @var{name}; @pxref{Blocks and Exits}.
  255. @end defmac
  256. @defmac cl-defsubst name arglist body@dots{}
  257. This is just like @code{cl-defun}, except that the function that
  258. is defined is automatically proclaimed @code{inline}, i.e.,
  259. calls to it may be expanded into in-line code by the byte compiler.
  260. This is analogous to the @code{defsubst} form;
  261. @code{cl-defsubst} uses a different method (compiler macros) which
  262. works in all versions of Emacs, and also generates somewhat more
  263. @c For some examples,
  264. @c see http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00009.html
  265. efficient inline expansions. In particular, @code{cl-defsubst}
  266. arranges for the processing of keyword arguments, default values,
  267. etc., to be done at compile-time whenever possible.
  268. @end defmac
  269. @defmac cl-defmacro name arglist body@dots{}
  270. This is identical to the regular @code{defmacro} form,
  271. except that @var{arglist} is allowed to be a full Common Lisp
  272. argument list. The @code{&environment} keyword is supported as
  273. described in Steele's book @cite{Common Lisp, the Language}.
  274. The @code{&whole} keyword is supported only
  275. within destructured lists (see below); top-level @code{&whole}
  276. cannot be implemented with the current Emacs Lisp interpreter.
  277. The macro expander body is enclosed in an implicit block called
  278. @var{name}.
  279. @end defmac
  280. @defmac cl-function symbol-or-lambda
  281. This is identical to the regular @code{function} form,
  282. except that if the argument is a @code{lambda} form then that
  283. form may use a full Common Lisp argument list.
  284. @end defmac
  285. Also, all forms (such as @code{cl-flet} and @code{cl-labels}) defined
  286. in this package that include @var{arglist}s in their syntax allow
  287. full Common Lisp argument lists.
  288. Note that it is @emph{not} necessary to use @code{cl-defun} in
  289. order to have access to most CL features in your function.
  290. These features are always present; @code{cl-defun}'s only
  291. difference from @code{defun} is its more flexible argument
  292. lists and its implicit block.
  293. The full form of a Common Lisp argument list is
  294. @example
  295. (@var{var}@dots{}
  296. &optional (@var{var} @var{initform} @var{svar})@dots{}
  297. &rest @var{var}
  298. &key ((@var{keyword} @var{var}) @var{initform} @var{svar})@dots{}
  299. &aux (@var{var} @var{initform})@dots{})
  300. @end example
  301. Each of the five argument list sections is optional. The @var{svar},
  302. @var{initform}, and @var{keyword} parts are optional; if they are
  303. omitted, then @samp{(@var{var})} may be written simply @samp{@var{var}}.
  304. The first section consists of zero or more @dfn{required} arguments.
  305. These arguments must always be specified in a call to the function;
  306. there is no difference between Emacs Lisp and Common Lisp as far as
  307. required arguments are concerned.
  308. The second section consists of @dfn{optional} arguments. These
  309. arguments may be specified in the function call; if they are not,
  310. @var{initform} specifies the default value used for the argument.
  311. (No @var{initform} means to use @code{nil} as the default.) The
  312. @var{initform} is evaluated with the bindings for the preceding
  313. arguments already established; @code{(a &optional (b (1+ a)))}
  314. matches one or two arguments, with the second argument defaulting
  315. to one plus the first argument. If the @var{svar} is specified,
  316. it is an auxiliary variable which is bound to @code{t} if the optional
  317. argument was specified, or to @code{nil} if the argument was omitted.
  318. If you don't use an @var{svar}, then there will be no way for your
  319. function to tell whether it was called with no argument, or with
  320. the default value passed explicitly as an argument.
  321. The third section consists of a single @dfn{rest} argument. If
  322. more arguments were passed to the function than are accounted for
  323. by the required and optional arguments, those extra arguments are
  324. collected into a list and bound to the ``rest'' argument variable.
  325. Common Lisp's @code{&rest} is equivalent to that of Emacs Lisp.
  326. Common Lisp accepts @code{&body} as a synonym for @code{&rest} in
  327. macro contexts; this package accepts it all the time.
  328. The fourth section consists of @dfn{keyword} arguments. These
  329. are optional arguments which are specified by name rather than
  330. positionally in the argument list. For example,
  331. @example
  332. (cl-defun foo (a &optional b &key c d (e 17)))
  333. @end example
  334. @noindent
  335. defines a function which may be called with one, two, or more
  336. arguments. The first two arguments are bound to @code{a} and
  337. @code{b} in the usual way. The remaining arguments must be
  338. pairs of the form @code{:c}, @code{:d}, or @code{:e} followed
  339. by the value to be bound to the corresponding argument variable.
  340. (Symbols whose names begin with a colon are called @dfn{keywords},
  341. and they are self-quoting in the same way as @code{nil} and
  342. @code{t}.)
  343. For example, the call @code{(foo 1 2 :d 3 :c 4)} sets the five
  344. arguments to 1, 2, 4, 3, and 17, respectively. If the same keyword
  345. appears more than once in the function call, the first occurrence
  346. takes precedence over the later ones. Note that it is not possible
  347. to specify keyword arguments without specifying the optional
  348. argument @code{b} as well, since @code{(foo 1 :c 2)} would bind
  349. @code{b} to the keyword @code{:c}, then signal an error because
  350. @code{2} is not a valid keyword.
  351. You can also explicitly specify the keyword argument; it need not be
  352. simply the variable name prefixed with a colon. For example,
  353. @example
  354. (cl-defun bar (&key (a 1) ((baz b) 4)))
  355. @end example
  356. @noindent
  357. specifies a keyword @code{:a} that sets the variable @code{a} with
  358. default value 1, as well as a keyword @code{baz} that sets the
  359. variable @code{b} with default value 4. In this case, because
  360. @code{baz} is not self-quoting, you must quote it explicitly in the
  361. function call, like this:
  362. @example
  363. (bar :a 10 'baz 42)
  364. @end example
  365. Ordinarily, it is an error to pass an unrecognized keyword to
  366. a function, e.g., @code{(foo 1 2 :c 3 :goober 4)}. You can ask
  367. Lisp to ignore unrecognized keywords, either by adding the
  368. marker @code{&allow-other-keys} after the keyword section
  369. of the argument list, or by specifying an @code{:allow-other-keys}
  370. argument in the call whose value is non-@code{nil}. If the
  371. function uses both @code{&rest} and @code{&key} at the same time,
  372. the ``rest'' argument is bound to the keyword list as it appears
  373. in the call. For example:
  374. @example
  375. (cl-defun find-thing (thing &rest rest &key need &allow-other-keys)
  376. (or (apply 'cl-member thing thing-list :allow-other-keys t rest)
  377. (if need (error "Thing not found"))))
  378. @end example
  379. @noindent
  380. This function takes a @code{:need} keyword argument, but also
  381. accepts other keyword arguments which are passed on to the
  382. @code{cl-member} function. @code{allow-other-keys} is used to
  383. keep both @code{find-thing} and @code{cl-member} from complaining
  384. about each others' keywords in the arguments.
  385. The fifth section of the argument list consists of @dfn{auxiliary
  386. variables}. These are not really arguments at all, but simply
  387. variables which are bound to @code{nil} or to the specified
  388. @var{initforms} during execution of the function. There is no
  389. difference between the following two functions, except for a
  390. matter of stylistic taste:
  391. @example
  392. (cl-defun foo (a b &aux (c (+ a b)) d)
  393. @var{body})
  394. (cl-defun foo (a b)
  395. (let ((c (+ a b)) d)
  396. @var{body}))
  397. @end example
  398. @cindex destructuring, in argument list
  399. Argument lists support @dfn{destructuring}. In Common Lisp,
  400. destructuring is only allowed with @code{defmacro}; this package
  401. allows it with @code{cl-defun} and other argument lists as well.
  402. In destructuring, any argument variable (@var{var} in the above
  403. example) can be replaced by a list of variables, or more generally,
  404. a recursive argument list. The corresponding argument value must
  405. be a list whose elements match this recursive argument list.
  406. For example:
  407. @example
  408. (cl-defmacro dolist ((var listform &optional resultform)
  409. &rest body)
  410. @dots{})
  411. @end example
  412. This says that the first argument of @code{dolist} must be a list
  413. of two or three items; if there are other arguments as well as this
  414. list, they are stored in @code{body}. All features allowed in
  415. regular argument lists are allowed in these recursive argument lists.
  416. In addition, the clause @samp{&whole @var{var}} is allowed at the
  417. front of a recursive argument list. It binds @var{var} to the
  418. whole list being matched; thus @code{(&whole all a b)} matches
  419. a list of two things, with @code{a} bound to the first thing,
  420. @code{b} bound to the second thing, and @code{all} bound to the
  421. list itself. (Common Lisp allows @code{&whole} in top-level
  422. @code{defmacro} argument lists as well, but Emacs Lisp does not
  423. support this usage.)
  424. One last feature of destructuring is that the argument list may be
  425. dotted, so that the argument list @code{(a b . c)} is functionally
  426. equivalent to @code{(a b &rest c)}.
  427. If the optimization quality @code{safety} is set to 0
  428. (@pxref{Declarations}), error checking for wrong number of
  429. arguments and invalid keyword arguments is disabled. By default,
  430. argument lists are rigorously checked.
  431. @node Time of Evaluation
  432. @section Time of Evaluation
  433. @noindent
  434. Normally, the byte-compiler does not actually execute the forms in
  435. a file it compiles. For example, if a file contains @code{(setq foo t)},
  436. the act of compiling it will not actually set @code{foo} to @code{t}.
  437. This is true even if the @code{setq} was a top-level form (i.e., not
  438. enclosed in a @code{defun} or other form). Sometimes, though, you
  439. would like to have certain top-level forms evaluated at compile-time.
  440. For example, the compiler effectively evaluates @code{defmacro} forms
  441. at compile-time so that later parts of the file can refer to the
  442. macros that are defined.
  443. @defmac cl-eval-when (situations@dots{}) forms@dots{}
  444. This form controls when the body @var{forms} are evaluated.
  445. The @var{situations} list may contain any set of the symbols
  446. @code{compile}, @code{load}, and @code{eval} (or their long-winded
  447. ANSI equivalents, @code{:compile-toplevel}, @code{:load-toplevel},
  448. and @code{:execute}).
  449. The @code{cl-eval-when} form is handled differently depending on
  450. whether or not it is being compiled as a top-level form.
  451. Specifically, it gets special treatment if it is being compiled
  452. by a command such as @code{byte-compile-file} which compiles files
  453. or buffers of code, and it appears either literally at the
  454. top level of the file or inside a top-level @code{progn}.
  455. For compiled top-level @code{cl-eval-when}s, the body @var{forms} are
  456. executed at compile-time if @code{compile} is in the @var{situations}
  457. list, and the @var{forms} are written out to the file (to be executed
  458. at load-time) if @code{load} is in the @var{situations} list.
  459. For non-compiled-top-level forms, only the @code{eval} situation is
  460. relevant. (This includes forms executed by the interpreter, forms
  461. compiled with @code{byte-compile} rather than @code{byte-compile-file},
  462. and non-top-level forms.) The @code{cl-eval-when} acts like a
  463. @code{progn} if @code{eval} is specified, and like @code{nil}
  464. (ignoring the body @var{forms}) if not.
  465. The rules become more subtle when @code{cl-eval-when}s are nested;
  466. consult Steele (second edition) for the gruesome details (and
  467. some gruesome examples).
  468. Some simple examples:
  469. @example
  470. ;; Top-level forms in foo.el:
  471. (cl-eval-when (compile) (setq foo1 'bar))
  472. (cl-eval-when (load) (setq foo2 'bar))
  473. (cl-eval-when (compile load) (setq foo3 'bar))
  474. (cl-eval-when (eval) (setq foo4 'bar))
  475. (cl-eval-when (eval compile) (setq foo5 'bar))
  476. (cl-eval-when (eval load) (setq foo6 'bar))
  477. (cl-eval-when (eval compile load) (setq foo7 'bar))
  478. @end example
  479. When @file{foo.el} is compiled, these variables will be set during
  480. the compilation itself:
  481. @example
  482. foo1 foo3 foo5 foo7 ; 'compile'
  483. @end example
  484. When @file{foo.elc} is loaded, these variables will be set:
  485. @example
  486. foo2 foo3 foo6 foo7 ; 'load'
  487. @end example
  488. And if @file{foo.el} is loaded uncompiled, these variables will
  489. be set:
  490. @example
  491. foo4 foo5 foo6 foo7 ; 'eval'
  492. @end example
  493. If these seven @code{cl-eval-when}s had been, say, inside a @code{defun},
  494. then the first three would have been equivalent to @code{nil} and the
  495. last four would have been equivalent to the corresponding @code{setq}s.
  496. Note that @code{(cl-eval-when (load eval) @dots{})} is equivalent
  497. to @code{(progn @dots{})} in all contexts. The compiler treats
  498. certain top-level forms, like @code{defmacro} (sort-of) and
  499. @code{require}, as if they were wrapped in @code{(cl-eval-when
  500. (compile load eval) @dots{})}.
  501. @end defmac
  502. Emacs includes two special forms related to @code{cl-eval-when}.
  503. @xref{Eval During Compile,,,elisp,GNU Emacs Lisp Reference Manual}.
  504. One of these, @code{eval-when-compile}, is not quite equivalent to
  505. any @code{cl-eval-when} construct and is described below.
  506. The other form, @code{(eval-and-compile @dots{})}, is exactly
  507. equivalent to @samp{(cl-eval-when (compile load eval) @dots{})}.
  508. @defmac eval-when-compile forms@dots{}
  509. The @var{forms} are evaluated at compile-time; at execution time,
  510. this form acts like a quoted constant of the resulting value. Used
  511. at top-level, @code{eval-when-compile} is just like @samp{eval-when
  512. (compile eval)}. In other contexts, @code{eval-when-compile}
  513. allows code to be evaluated once at compile-time for efficiency
  514. or other reasons.
  515. This form is similar to the @samp{#.} syntax of true Common Lisp.
  516. @end defmac
  517. @defmac cl-load-time-value form
  518. The @var{form} is evaluated at load-time; at execution time,
  519. this form acts like a quoted constant of the resulting value.
  520. Early Common Lisp had a @samp{#,} syntax that was similar to
  521. this, but ANSI Common Lisp replaced it with @code{load-time-value}
  522. and gave it more well-defined semantics.
  523. In a compiled file, @code{cl-load-time-value} arranges for @var{form}
  524. to be evaluated when the @file{.elc} file is loaded and then used
  525. as if it were a quoted constant. In code compiled by
  526. @code{byte-compile} rather than @code{byte-compile-file}, the
  527. effect is identical to @code{eval-when-compile}. In uncompiled
  528. code, both @code{eval-when-compile} and @code{cl-load-time-value}
  529. act exactly like @code{progn}.
  530. @example
  531. (defun report ()
  532. (insert "This function was executed on: "
  533. (current-time-string)
  534. ", compiled on: "
  535. (eval-when-compile (current-time-string))
  536. ;; or '#.(current-time-string) in real Common Lisp
  537. ", and loaded on: "
  538. (cl-load-time-value (current-time-string))))
  539. @end example
  540. @noindent
  541. Byte-compiled, the above defun will result in the following code
  542. (or its compiled equivalent, of course) in the @file{.elc} file:
  543. @example
  544. (setq --temp-- (current-time-string))
  545. (defun report ()
  546. (insert "This function was executed on: "
  547. (current-time-string)
  548. ", compiled on: "
  549. '"Wed Oct 31 16:32:28 2012"
  550. ", and loaded on: "
  551. --temp--))
  552. @end example
  553. @end defmac
  554. @node Predicates
  555. @chapter Predicates
  556. @noindent
  557. This section describes functions for testing whether various
  558. facts are true or false.
  559. @menu
  560. * Type Predicates:: @code{cl-typep}, @code{cl-deftype}, and @code{cl-coerce}.
  561. * Equality Predicates:: @code{cl-equalp}.
  562. @end menu
  563. @node Type Predicates
  564. @section Type Predicates
  565. @defun cl-typep object type
  566. Check if @var{object} is of type @var{type}, where @var{type} is a
  567. (quoted) type name of the sort used by Common Lisp. For example,
  568. @code{(cl-typep foo 'integer)} is equivalent to @code{(integerp foo)}.
  569. @end defun
  570. The @var{type} argument to the above function is either a symbol
  571. or a list beginning with a symbol.
  572. @itemize @bullet
  573. @item
  574. If the type name is a symbol, Emacs appends @samp{-p} to the
  575. symbol name to form the name of a predicate function for testing
  576. the type. (Built-in predicates whose names end in @samp{p} rather
  577. than @samp{-p} are used when appropriate.)
  578. @item
  579. The type symbol @code{t} stands for the union of all types.
  580. @code{(cl-typep @var{object} t)} is always true. Likewise, the
  581. type symbol @code{nil} stands for nothing at all, and
  582. @code{(cl-typep @var{object} nil)} is always false.
  583. @item
  584. The type symbol @code{null} represents the symbol @code{nil}.
  585. Thus @code{(cl-typep @var{object} 'null)} is equivalent to
  586. @code{(null @var{object})}.
  587. @item
  588. The type symbol @code{atom} represents all objects that are not cons
  589. cells. Thus @code{(cl-typep @var{object} 'atom)} is equivalent to
  590. @code{(atom @var{object})}.
  591. @item
  592. The type symbol @code{real} is a synonym for @code{number}, and
  593. @code{fixnum} is a synonym for @code{integer}.
  594. @item
  595. The type symbols @code{character} and @code{string-char} match
  596. integers in the range from 0 to 255.
  597. @item
  598. The type list @code{(integer @var{low} @var{high})} represents all
  599. integers between @var{low} and @var{high}, inclusive. Either bound
  600. may be a list of a single integer to specify an exclusive limit,
  601. or a @code{*} to specify no limit. The type @code{(integer * *)}
  602. is thus equivalent to @code{integer}.
  603. @item
  604. Likewise, lists beginning with @code{float}, @code{real}, or
  605. @code{number} represent numbers of that type falling in a particular
  606. range.
  607. @item
  608. Lists beginning with @code{and}, @code{or}, and @code{not} form
  609. combinations of types. For example, @code{(or integer (float 0 *))}
  610. represents all objects that are integers or non-negative floats.
  611. @item
  612. Lists beginning with @code{member} or @code{cl-member} represent
  613. objects @code{eql} to any of the following values. For example,
  614. @code{(member 1 2 3 4)} is equivalent to @code{(integer 1 4)},
  615. and @code{(member nil)} is equivalent to @code{null}.
  616. @item
  617. Lists of the form @code{(satisfies @var{predicate})} represent
  618. all objects for which @var{predicate} returns true when called
  619. with that object as an argument.
  620. @end itemize
  621. The following function and macro (not technically predicates) are
  622. related to @code{cl-typep}.
  623. @defun cl-coerce object type
  624. This function attempts to convert @var{object} to the specified
  625. @var{type}. If @var{object} is already of that type as determined by
  626. @code{cl-typep}, it is simply returned. Otherwise, certain types of
  627. conversions will be made: If @var{type} is any sequence type
  628. (@code{string}, @code{list}, etc.)@: then @var{object} will be
  629. converted to that type if possible. If @var{type} is
  630. @code{character}, then strings of length one and symbols with
  631. one-character names can be coerced. If @var{type} is @code{float},
  632. then integers can be coerced in versions of Emacs that support
  633. floats. In all other circumstances, @code{cl-coerce} signals an
  634. error.
  635. @end defun
  636. @defmac cl-deftype name arglist forms@dots{}
  637. This macro defines a new type called @var{name}. It is similar
  638. to @code{defmacro} in many ways; when @var{name} is encountered
  639. as a type name, the body @var{forms} are evaluated and should
  640. return a type specifier that is equivalent to the type. The
  641. @var{arglist} is a Common Lisp argument list of the sort accepted
  642. by @code{cl-defmacro}. The type specifier @samp{(@var{name} @var{args}@dots{})}
  643. is expanded by calling the expander with those arguments; the type
  644. symbol @samp{@var{name}} is expanded by calling the expander with
  645. no arguments. The @var{arglist} is processed the same as for
  646. @code{cl-defmacro} except that optional arguments without explicit
  647. defaults use @code{*} instead of @code{nil} as the ``default''
  648. default. Some examples:
  649. @example
  650. (cl-deftype null () '(satisfies null)) ; predefined
  651. (cl-deftype list () '(or null cons)) ; predefined
  652. (cl-deftype unsigned-byte (&optional bits)
  653. (list 'integer 0 (if (eq bits '*) bits (1- (lsh 1 bits)))))
  654. (unsigned-byte 8) @equiv{} (integer 0 255)
  655. (unsigned-byte) @equiv{} (integer 0 *)
  656. unsigned-byte @equiv{} (integer 0 *)
  657. @end example
  658. @noindent
  659. The last example shows how the Common Lisp @code{unsigned-byte}
  660. type specifier could be implemented if desired; this package does
  661. not implement @code{unsigned-byte} by default.
  662. @end defmac
  663. The @code{cl-typecase} (@pxref{Conditionals}) and @code{cl-check-type}
  664. (@pxref{Assertions}) macros also use type names. The @code{cl-map},
  665. @code{cl-concatenate}, and @code{cl-merge} functions take type-name
  666. arguments to specify the type of sequence to return. @xref{Sequences}.
  667. @node Equality Predicates
  668. @section Equality Predicates
  669. @noindent
  670. This package defines the Common Lisp predicate @code{cl-equalp}.
  671. @defun cl-equalp a b
  672. This function is a more flexible version of @code{equal}. In
  673. particular, it compares strings case-insensitively, and it compares
  674. numbers without regard to type (so that @code{(cl-equalp 3 3.0)} is
  675. true). Vectors and conses are compared recursively. All other
  676. objects are compared as if by @code{equal}.
  677. This function differs from Common Lisp @code{equalp} in several
  678. respects. First, Common Lisp's @code{equalp} also compares
  679. @emph{characters} case-insensitively, which would be impractical
  680. in this package since Emacs does not distinguish between integers
  681. and characters. In keeping with the idea that strings are less
  682. vector-like in Emacs Lisp, this package's @code{cl-equalp} also will
  683. not compare strings against vectors of integers.
  684. @end defun
  685. Also note that the Common Lisp functions @code{member} and @code{assoc}
  686. use @code{eql} to compare elements, whereas Emacs Lisp follows the
  687. MacLisp tradition and uses @code{equal} for these two functions.
  688. The functions @code{cl-member} and @code{cl-assoc} use @code{eql},
  689. as in Common Lisp. The standard Emacs Lisp functions @code{memq} and
  690. @code{assq} use @code{eq}, and the standard @code{memql} uses @code{eql}.
  691. @node Control Structure
  692. @chapter Control Structure
  693. @noindent
  694. The features described in the following sections implement
  695. various advanced control structures, including extensions to the
  696. standard @code{setf} facility, and a number of looping and conditional
  697. constructs.
  698. @menu
  699. * Assignment:: The @code{cl-psetq} form.
  700. * Generalized Variables:: Extensions to generalized variables.
  701. * Variable Bindings:: @code{cl-progv}, @code{cl-flet}, @code{cl-macrolet}.
  702. * Conditionals:: @code{cl-case}, @code{cl-typecase}.
  703. * Blocks and Exits:: @code{cl-block}, @code{cl-return}, @code{cl-return-from}.
  704. * Iteration:: @code{cl-do}, @code{cl-dotimes}, @code{cl-dolist}, @code{cl-do-symbols}.
  705. * Loop Facility:: The Common Lisp @code{loop} macro.
  706. * Multiple Values:: @code{cl-values}, @code{cl-multiple-value-bind}, etc.
  707. @end menu
  708. @node Assignment
  709. @section Assignment
  710. @noindent
  711. The @code{cl-psetq} form is just like @code{setq}, except that multiple
  712. assignments are done in parallel rather than sequentially.
  713. @defmac cl-psetq [symbol form]@dots{}
  714. This special form (actually a macro) is used to assign to several
  715. variables simultaneously. Given only one @var{symbol} and @var{form},
  716. it has the same effect as @code{setq}. Given several @var{symbol}
  717. and @var{form} pairs, it evaluates all the @var{form}s in advance
  718. and then stores the corresponding variables afterwards.
  719. @example
  720. (setq x 2 y 3)
  721. (setq x (+ x y) y (* x y))
  722. x
  723. @result{} 5
  724. y ; @r{@code{y} was computed after @code{x} was set.}
  725. @result{} 15
  726. (setq x 2 y 3)
  727. (cl-psetq x (+ x y) y (* x y))
  728. x
  729. @result{} 5
  730. y ; @r{@code{y} was computed before @code{x} was set.}
  731. @result{} 6
  732. @end example
  733. The simplest use of @code{cl-psetq} is @code{(cl-psetq x y y x)}, which
  734. exchanges the values of two variables. (The @code{cl-rotatef} form
  735. provides an even more convenient way to swap two variables;
  736. @pxref{Modify Macros}.)
  737. @code{cl-psetq} always returns @code{nil}.
  738. @end defmac
  739. @node Generalized Variables
  740. @section Generalized Variables
  741. @cindex generalized variable
  742. A @dfn{generalized variable} or @dfn{place form} is one of the many
  743. places in Lisp memory where values can be stored. The simplest place
  744. form is a regular Lisp variable. But the @sc{car}s and @sc{cdr}s of lists,
  745. elements of arrays, properties of symbols, and many other locations
  746. are also places where Lisp values are stored. For basic information,
  747. @pxref{Generalized Variables,,,elisp,GNU Emacs Lisp Reference Manual}.
  748. This package provides several additional features related to
  749. generalized variables.
  750. @menu
  751. * Setf Extensions:: Additional @code{setf} places.
  752. * Modify Macros:: @code{cl-incf}, @code{cl-rotatef}, @code{cl-letf}, @code{cl-callf}, etc.
  753. @end menu
  754. @node Setf Extensions
  755. @subsection Setf Extensions
  756. Several standard (e.g., @code{car}) and Emacs-specific
  757. (e.g., @code{window-point}) Lisp functions are @code{setf}-able by default.
  758. This package defines @code{setf} handlers for several additional functions:
  759. @itemize
  760. @item
  761. Functions from this package:
  762. @example
  763. cl-rest cl-subseq cl-get cl-getf
  764. cl-caaar@dots{}cl-cddddr cl-first@dots{}cl-tenth
  765. @end example
  766. @noindent
  767. Note that for @code{cl-getf} (as for @code{nthcdr}), the list argument
  768. of the function must itself be a valid @var{place} form.
  769. @item
  770. General Emacs Lisp functions:
  771. @example
  772. buffer-file-name getenv
  773. buffer-modified-p global-key-binding
  774. buffer-name local-key-binding
  775. buffer-string mark
  776. buffer-substring mark-marker
  777. current-buffer marker-position
  778. current-case-table mouse-position
  779. current-column point
  780. current-global-map point-marker
  781. current-input-mode point-max
  782. current-local-map point-min
  783. current-window-configuration read-mouse-position
  784. default-file-modes screen-height
  785. documentation-property screen-width
  786. face-background selected-window
  787. face-background-pixmap selected-screen
  788. face-font selected-frame
  789. face-foreground standard-case-table
  790. face-underline-p syntax-table
  791. file-modes visited-file-modtime
  792. frame-height window-height
  793. frame-parameters window-width
  794. frame-visible-p x-get-secondary-selection
  795. frame-width x-get-selection
  796. get-register
  797. @end example
  798. Most of these have directly corresponding ``set'' functions, like
  799. @code{use-local-map} for @code{current-local-map}, or @code{goto-char}
  800. for @code{point}. A few, like @code{point-min}, expand to longer
  801. sequences of code when they are used with @code{setf}
  802. (@code{(narrow-to-region x (point-max))} in this case).
  803. @item
  804. A call of the form @code{(substring @var{subplace} @var{n} [@var{m}])},
  805. where @var{subplace} is itself a valid generalized variable whose
  806. current value is a string, and where the value stored is also a
  807. string. The new string is spliced into the specified part of the
  808. destination string. For example:
  809. @example
  810. (setq a (list "hello" "world"))
  811. @result{} ("hello" "world")
  812. (cadr a)
  813. @result{} "world"
  814. (substring (cadr a) 2 4)
  815. @result{} "rl"
  816. (setf (substring (cadr a) 2 4) "o")
  817. @result{} "o"
  818. (cadr a)
  819. @result{} "wood"
  820. a
  821. @result{} ("hello" "wood")
  822. @end example
  823. The generalized variable @code{buffer-substring}, listed above,
  824. also works in this way by replacing a portion of the current buffer.
  825. @c FIXME? Also 'eq'? (see cl-lib.el)
  826. @c Currently commented out in cl.el.
  827. @ignore
  828. @item
  829. A call of the form @code{(apply '@var{func} @dots{})} or
  830. @code{(apply (function @var{func}) @dots{})}, where @var{func}
  831. is a @code{setf}-able function whose store function is ``suitable''
  832. in the sense described in Steele's book; since none of the standard
  833. Emacs place functions are suitable in this sense, this feature is
  834. only interesting when used with places you define yourself with
  835. @code{define-setf-method} or the long form of @code{defsetf}.
  836. @xref{Obsolete Setf Customization}.
  837. @end ignore
  838. @c FIXME? Is this still true?
  839. @item
  840. A macro call, in which case the macro is expanded and @code{setf}
  841. is applied to the resulting form.
  842. @end itemize
  843. @c FIXME should this be in lispref? It seems self-evident.
  844. @c Contrast with the cl-incf example later on.
  845. @c Here it really only serves as a contrast to wrong-order.
  846. The @code{setf} macro takes care to evaluate all subforms in
  847. the proper left-to-right order; for example,
  848. @example
  849. (setf (aref vec (cl-incf i)) i)
  850. @end example
  851. @noindent
  852. looks like it will evaluate @code{(cl-incf i)} exactly once, before the
  853. following access to @code{i}; the @code{setf} expander will insert
  854. temporary variables as necessary to ensure that it does in fact work
  855. this way no matter what setf-method is defined for @code{aref}.
  856. (In this case, @code{aset} would be used and no such steps would
  857. be necessary since @code{aset} takes its arguments in a convenient
  858. order.)
  859. However, if the @var{place} form is a macro which explicitly
  860. evaluates its arguments in an unusual order, this unusual order
  861. will be preserved. Adapting an example from Steele, given
  862. @example
  863. (defmacro wrong-order (x y) (list 'aref y x))
  864. @end example
  865. @noindent
  866. the form @code{(setf (wrong-order @var{a} @var{b}) 17)} will
  867. evaluate @var{b} first, then @var{a}, just as in an actual call
  868. to @code{wrong-order}.
  869. @node Modify Macros
  870. @subsection Modify Macros
  871. @noindent
  872. This package defines a number of macros that operate on generalized
  873. variables. Many are interesting and useful even when the @var{place}
  874. is just a variable name.
  875. @defmac cl-psetf [place form]@dots{}
  876. This macro is to @code{setf} what @code{cl-psetq} is to @code{setq}:
  877. When several @var{place}s and @var{form}s are involved, the
  878. assignments take place in parallel rather than sequentially.
  879. Specifically, all subforms are evaluated from left to right, then
  880. all the assignments are done (in an undefined order).
  881. @end defmac
  882. @defmac cl-incf place &optional x
  883. This macro increments the number stored in @var{place} by one, or
  884. by @var{x} if specified. The incremented value is returned. For
  885. example, @code{(cl-incf i)} is equivalent to @code{(setq i (1+ i))}, and
  886. @code{(cl-incf (car x) 2)} is equivalent to @code{(setcar x (+ (car x) 2))}.
  887. As with @code{setf}, care is taken to preserve the ``apparent'' order
  888. of evaluation. For example,
  889. @example
  890. (cl-incf (aref vec (cl-incf i)))
  891. @end example
  892. @noindent
  893. appears to increment @code{i} once, then increment the element of
  894. @code{vec} addressed by @code{i}; this is indeed exactly what it
  895. does, which means the above form is @emph{not} equivalent to the
  896. ``obvious'' expansion,
  897. @example
  898. (setf (aref vec (cl-incf i))
  899. (1+ (aref vec (cl-incf i)))) ; wrong!
  900. @end example
  901. @noindent
  902. but rather to something more like
  903. @example
  904. (let ((temp (cl-incf i)))
  905. (setf (aref vec temp) (1+ (aref vec temp))))
  906. @end example
  907. @noindent
  908. Again, all of this is taken care of automatically by @code{cl-incf} and
  909. the other generalized-variable macros.
  910. As a more Emacs-specific example of @code{cl-incf}, the expression
  911. @code{(cl-incf (point) @var{n})} is essentially equivalent to
  912. @code{(forward-char @var{n})}.
  913. @end defmac
  914. @defmac cl-decf place &optional x
  915. This macro decrements the number stored in @var{place} by one, or
  916. by @var{x} if specified.
  917. @end defmac
  918. @defmac cl-pushnew x place @t{&key :test :test-not :key}
  919. This macro inserts @var{x} at the front of the list stored in
  920. @var{place}, but only if @var{x} was not @code{eql} to any
  921. existing element of the list. The optional keyword arguments
  922. are interpreted in the same way as for @code{cl-adjoin}.
  923. @xref{Lists as Sets}.
  924. @end defmac
  925. @defmac cl-shiftf place@dots{} newvalue
  926. This macro shifts the @var{place}s left by one, shifting in the
  927. value of @var{newvalue} (which may be any Lisp expression, not just
  928. a generalized variable), and returning the value shifted out of
  929. the first @var{place}. Thus, @code{(cl-shiftf @var{a} @var{b} @var{c}
  930. @var{d})} is equivalent to
  931. @example
  932. (prog1
  933. @var{a}
  934. (cl-psetf @var{a} @var{b}
  935. @var{b} @var{c}
  936. @var{c} @var{d}))
  937. @end example
  938. @noindent
  939. except that the subforms of @var{a}, @var{b}, and @var{c} are actually
  940. evaluated only once each and in the apparent order.
  941. @end defmac
  942. @defmac cl-rotatef place@dots{}
  943. This macro rotates the @var{place}s left by one in circular fashion.
  944. Thus, @code{(cl-rotatef @var{a} @var{b} @var{c} @var{d})} is equivalent to
  945. @example
  946. (cl-psetf @var{a} @var{b}
  947. @var{b} @var{c}
  948. @var{c} @var{d}
  949. @var{d} @var{a})
  950. @end example
  951. @noindent
  952. except for the evaluation of subforms. @code{cl-rotatef} always
  953. returns @code{nil}. Note that @code{(cl-rotatef @var{a} @var{b})}
  954. conveniently exchanges @var{a} and @var{b}.
  955. @end defmac
  956. The following macros were invented for this package; they have no
  957. analogues in Common Lisp.
  958. @defmac cl-letf (bindings@dots{}) forms@dots{}
  959. This macro is analogous to @code{let}, but for generalized variables
  960. rather than just symbols. Each @var{binding} should be of the form
  961. @code{(@var{place} @var{value})}; the original contents of the
  962. @var{place}s are saved, the @var{value}s are stored in them, and
  963. then the body @var{form}s are executed. Afterwards, the @var{places}
  964. are set back to their original saved contents. This cleanup happens
  965. even if the @var{form}s exit irregularly due to a @code{throw} or an
  966. error.
  967. For example,
  968. @example
  969. (cl-letf (((point) (point-min))
  970. (a 17))
  971. @dots{})
  972. @end example
  973. @noindent
  974. moves point in the current buffer to the beginning of the buffer,
  975. and also binds @code{a} to 17 (as if by a normal @code{let}, since
  976. @code{a} is just a regular variable). After the body exits, @code{a}
  977. is set back to its original value and point is moved back to its
  978. original position.
  979. Note that @code{cl-letf} on @code{(point)} is not quite like a
  980. @code{save-excursion}, as the latter effectively saves a marker
  981. which tracks insertions and deletions in the buffer. Actually,
  982. a @code{cl-letf} of @code{(point-marker)} is much closer to this
  983. behavior. (@code{point} and @code{point-marker} are equivalent
  984. as @code{setf} places; each will accept either an integer or a
  985. marker as the stored value.)
  986. Like in the case of @code{let}, the @var{value} forms are evaluated in
  987. the order they appear, but the order of bindings is unspecified.
  988. Therefore, avoid binding the same @var{place} more than once in a
  989. single @code{cl-letf} form.
  990. Since generalized variables look like lists, @code{let}'s shorthand
  991. of using @samp{foo} for @samp{(foo nil)} as a @var{binding} would
  992. be ambiguous in @code{cl-letf} and is not allowed.
  993. However, a @var{binding} specifier may be a one-element list
  994. @samp{(@var{place})}, which is similar to @samp{(@var{place}
  995. @var{place})}. In other words, the @var{place} is not disturbed
  996. on entry to the body, and the only effect of the @code{cl-letf} is
  997. to restore the original value of @var{place} afterwards.
  998. @c I suspect this may no longer be true; either way it's
  999. @c implementation detail and so not essential to document.
  1000. @ignore
  1001. (The redundant access-and-store suggested by the @code{(@var{place}
  1002. @var{place})} example does not actually occur.)
  1003. @end ignore
  1004. Note that in this case, and in fact almost every case, @var{place}
  1005. must have a well-defined value outside the @code{cl-letf} body.
  1006. There is essentially only one exception to this, which is @var{place}
  1007. a plain variable with a specified @var{value} (such as @code{(a 17)}
  1008. in the above example).
  1009. @c See http://debbugs.gnu.org/12758
  1010. @c Some or all of this was true for cl.el, but not for cl-lib.el.
  1011. @ignore
  1012. The only exceptions are plain variables and calls to
  1013. @code{symbol-value} and @code{symbol-function}. If the symbol is not
  1014. bound on entry, it is simply made unbound by @code{makunbound} or
  1015. @code{fmakunbound} on exit.
  1016. @end ignore
  1017. @end defmac
  1018. @defmac cl-letf* (bindings@dots{}) forms@dots{}
  1019. This macro is to @code{cl-letf} what @code{let*} is to @code{let}:
  1020. It does the bindings in sequential rather than parallel order.
  1021. @end defmac
  1022. @defmac cl-callf @var{function} @var{place} @var{args}@dots{}
  1023. This is the ``generic'' modify macro. It calls @var{function},
  1024. which should be an unquoted function name, macro name, or lambda.
  1025. It passes @var{place} and @var{args} as arguments, and assigns the
  1026. result back to @var{place}. For example, @code{(cl-incf @var{place}
  1027. @var{n})} is the same as @code{(cl-callf + @var{place} @var{n})}.
  1028. Some more examples:
  1029. @example
  1030. (cl-callf abs my-number)
  1031. (cl-callf concat (buffer-name) "<" (number-to-string n) ">")
  1032. (cl-callf cl-union happy-people (list joe bob) :test 'same-person)
  1033. @end example
  1034. Note again that @code{cl-callf} is an extension to standard Common Lisp.
  1035. @end defmac
  1036. @defmac cl-callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{}
  1037. This macro is like @code{cl-callf}, except that @var{place} is
  1038. the @emph{second} argument of @var{function} rather than the
  1039. first. For example, @code{(push @var{x} @var{place})} is
  1040. equivalent to @code{(cl-callf2 cons @var{x} @var{place})}.
  1041. @end defmac
  1042. The @code{cl-callf} and @code{cl-callf2} macros serve as building
  1043. blocks for other macros like @code{cl-incf}, and @code{cl-pushnew}.
  1044. The @code{cl-letf} and @code{cl-letf*} macros are used in the processing
  1045. of symbol macros; @pxref{Macro Bindings}.
  1046. @node Variable Bindings
  1047. @section Variable Bindings
  1048. @cindex variable binding
  1049. @noindent
  1050. These Lisp forms make bindings to variables and function names,
  1051. analogous to Lisp's built-in @code{let} form.
  1052. @xref{Modify Macros}, for the @code{cl-letf} and @code{cl-letf*} forms which
  1053. are also related to variable bindings.
  1054. @menu
  1055. * Dynamic Bindings:: The @code{cl-progv} form.
  1056. * Function Bindings:: @code{cl-flet} and @code{cl-labels}.
  1057. * Macro Bindings:: @code{cl-macrolet} and @code{cl-symbol-macrolet}.
  1058. @end menu
  1059. @node Dynamic Bindings
  1060. @subsection Dynamic Bindings
  1061. @cindex dynamic binding
  1062. @noindent
  1063. The standard @code{let} form binds variables whose names are known
  1064. at compile-time. The @code{cl-progv} form provides an easy way to
  1065. bind variables whose names are computed at run-time.
  1066. @defmac cl-progv symbols values forms@dots{}
  1067. This form establishes @code{let}-style variable bindings on a
  1068. set of variables computed at run-time. The expressions
  1069. @var{symbols} and @var{values} are evaluated, and must return lists
  1070. of symbols and values, respectively. The symbols are bound to the
  1071. corresponding values for the duration of the body @var{form}s.
  1072. If @var{values} is shorter than @var{symbols}, the last few symbols
  1073. are bound to @code{nil}.
  1074. If @var{symbols} is shorter than @var{values}, the excess values
  1075. are ignored.
  1076. @end defmac
  1077. @node Function Bindings
  1078. @subsection Function Bindings
  1079. @cindex function binding
  1080. @noindent
  1081. These forms make @code{let}-like bindings to functions instead
  1082. of variables.
  1083. @defmac cl-flet (bindings@dots{}) forms@dots{}
  1084. This form establishes @code{let}-style bindings on the function
  1085. cells of symbols rather than on the value cells. Each @var{binding}
  1086. must be a list of the form @samp{(@var{name} @var{arglist}
  1087. @var{forms}@dots{})}, which defines a function exactly as if
  1088. it were a @code{cl-defun} form. The function @var{name} is defined
  1089. accordingly but only within the body of the @code{cl-flet}, hiding any external
  1090. definition if applicable.
  1091. The bindings are lexical in scope. This means that all references to
  1092. the named functions must appear physically within the body of the
  1093. @code{cl-flet} form.
  1094. Functions defined by @code{cl-flet} may use the full Common Lisp
  1095. argument notation supported by @code{cl-defun}; also, the function
  1096. body is enclosed in an implicit block as if by @code{cl-defun}.
  1097. @xref{Program Structure}.
  1098. Note that the @file{cl.el} version of this macro behaves slightly
  1099. differently. In particular, its binding is dynamic rather than
  1100. lexical. @xref{Obsolete Macros}.
  1101. @end defmac
  1102. @defmac cl-labels (bindings@dots{}) forms@dots{}
  1103. The @code{cl-labels} form is like @code{cl-flet}, except that
  1104. the function bindings can be recursive. The scoping is lexical,
  1105. but you can only capture functions in closures if
  1106. @code{lexical-binding} is @code{t}.
  1107. @xref{Closures,,,elisp,GNU Emacs Lisp Reference Manual}, and
  1108. @ref{Using Lexical Binding,,,elisp,GNU Emacs Lisp Reference Manual}.
  1109. Lexical scoping means that all references to the named
  1110. functions must appear physically within the body of the
  1111. @code{cl-labels} form. References may appear both in the body
  1112. @var{forms} of @code{cl-labels} itself, and in the bodies of
  1113. the functions themselves. Thus, @code{cl-labels} can define
  1114. local recursive functions, or mutually-recursive sets of functions.
  1115. A ``reference'' to a function name is either a call to that
  1116. function, or a use of its name quoted by @code{quote} or
  1117. @code{function} to be passed on to, say, @code{mapcar}.
  1118. Note that the @file{cl.el} version of this macro behaves slightly
  1119. differently. @xref{Obsolete Macros}.
  1120. @end defmac
  1121. @node Macro Bindings
  1122. @subsection Macro Bindings
  1123. @cindex macro binding
  1124. @noindent
  1125. These forms create local macros and ``symbol macros''.
  1126. @defmac cl-macrolet (bindings@dots{}) forms@dots{}
  1127. This form is analogous to @code{cl-flet}, but for macros instead of
  1128. functions. Each @var{binding} is a list of the same form as the
  1129. arguments to @code{cl-defmacro} (i.e., a macro name, argument list,
  1130. and macro-expander forms). The macro is defined accordingly for
  1131. use within the body of the @code{cl-macrolet}.
  1132. Because of the nature of macros, @code{cl-macrolet} is always lexically
  1133. scoped. The @code{cl-macrolet} binding will
  1134. affect only calls that appear physically within the body
  1135. @var{forms}, possibly after expansion of other macros in the
  1136. body.
  1137. @end defmac
  1138. @defmac cl-symbol-macrolet (bindings@dots{}) forms@dots{}
  1139. This form creates @dfn{symbol macros}, which are macros that look
  1140. like variable references rather than function calls. Each
  1141. @var{binding} is a list @samp{(@var{var} @var{expansion})};
  1142. any reference to @var{var} within the body @var{forms} is
  1143. replaced by @var{expansion}.
  1144. @example
  1145. (setq bar '(5 . 9))
  1146. (cl-symbol-macrolet ((foo (car bar)))
  1147. (cl-incf foo))
  1148. bar
  1149. @result{} (6 . 9)
  1150. @end example
  1151. A @code{setq} of a symbol macro is treated the same as a @code{setf}.
  1152. I.e., @code{(setq foo 4)} in the above would be equivalent to
  1153. @code{(setf foo 4)}, which in turn expands to @code{(setf (car bar) 4)}.
  1154. Likewise, a @code{let} or @code{let*} binding a symbol macro is
  1155. treated like a @code{cl-letf} or @code{cl-letf*}. This differs from true
  1156. Common Lisp, where the rules of lexical scoping cause a @code{let}
  1157. binding to shadow a @code{symbol-macrolet} binding. In this package,
  1158. such shadowing does not occur, even when @code{lexical-binding} is
  1159. @c See http://debbugs.gnu.org/12119
  1160. @code{t}. (This behavior predates the addition of lexical binding to
  1161. Emacs Lisp, and may change in future to respect @code{lexical-binding}.)
  1162. At present in this package, only @code{lexical-let} and
  1163. @code{lexical-let*} will shadow a symbol macro. @xref{Obsolete
  1164. Lexical Binding}.
  1165. There is no analogue of @code{defmacro} for symbol macros; all symbol
  1166. macros are local. A typical use of @code{cl-symbol-macrolet} is in the
  1167. expansion of another macro:
  1168. @example
  1169. (cl-defmacro my-dolist ((x list) &rest body)
  1170. (let ((var (cl-gensym)))
  1171. (list 'cl-loop 'for var 'on list 'do
  1172. (cl-list* 'cl-symbol-macrolet
  1173. (list (list x (list 'car var)))
  1174. body))))
  1175. (setq mylist '(1 2 3 4))
  1176. (my-dolist (x mylist) (cl-incf x))
  1177. mylist
  1178. @result{} (2 3 4 5)
  1179. @end example
  1180. @noindent
  1181. In this example, the @code{my-dolist} macro is similar to @code{dolist}
  1182. (@pxref{Iteration}) except that the variable @code{x} becomes a true
  1183. reference onto the elements of the list. The @code{my-dolist} call
  1184. shown here expands to
  1185. @example
  1186. (cl-loop for G1234 on mylist do
  1187. (cl-symbol-macrolet ((x (car G1234)))
  1188. (cl-incf x)))
  1189. @end example
  1190. @noindent
  1191. which in turn expands to
  1192. @example
  1193. (cl-loop for G1234 on mylist do (cl-incf (car G1234)))
  1194. @end example
  1195. @xref{Loop Facility}, for a description of the @code{cl-loop} macro.
  1196. This package defines a nonstandard @code{in-ref} loop clause that
  1197. works much like @code{my-dolist}.
  1198. @end defmac
  1199. @node Conditionals
  1200. @section Conditionals
  1201. @cindex conditionals
  1202. @noindent
  1203. These conditional forms augment Emacs Lisp's simple @code{if},
  1204. @code{and}, @code{or}, and @code{cond} forms.
  1205. @defmac cl-case keyform clause@dots{}
  1206. This macro evaluates @var{keyform}, then compares it with the key
  1207. values listed in the various @var{clause}s. Whichever clause matches
  1208. the key is executed; comparison is done by @code{eql}. If no clause
  1209. matches, the @code{cl-case} form returns @code{nil}. The clauses are
  1210. of the form
  1211. @example
  1212. (@var{keylist} @var{body-forms}@dots{})
  1213. @end example
  1214. @noindent
  1215. where @var{keylist} is a list of key values. If there is exactly
  1216. one value, and it is not a cons cell or the symbol @code{nil} or
  1217. @code{t}, then it can be used by itself as a @var{keylist} without
  1218. being enclosed in a list. All key values in the @code{cl-case} form
  1219. must be distinct. The final clauses may use @code{t} in place of
  1220. a @var{keylist} to indicate a default clause that should be taken
  1221. if none of the other clauses match. (The symbol @code{otherwise}
  1222. is also recognized in place of @code{t}. To make a clause that
  1223. matches the actual symbol @code{t}, @code{nil}, or @code{otherwise},
  1224. enclose the symbol in a list.)
  1225. For example, this expression reads a keystroke, then does one of
  1226. four things depending on whether it is an @samp{a}, a @samp{b},
  1227. a @key{RET} or @kbd{C-j}, or anything else.
  1228. @example
  1229. (cl-case (read-char)
  1230. (?a (do-a-thing))
  1231. (?b (do-b-thing))
  1232. ((?\r ?\n) (do-ret-thing))
  1233. (t (do-other-thing)))
  1234. @end example
  1235. @end defmac
  1236. @defmac cl-ecase keyform clause@dots{}
  1237. This macro is just like @code{cl-case}, except that if the key does
  1238. not match any of the clauses, an error is signaled rather than
  1239. simply returning @code{nil}.
  1240. @end defmac
  1241. @defmac cl-typecase keyform clause@dots{}
  1242. This macro is a version of @code{cl-case} that checks for types
  1243. rather than values. Each @var{clause} is of the form
  1244. @samp{(@var{type} @var{body}@dots{})}. @xref{Type Predicates},
  1245. for a description of type specifiers. For example,
  1246. @example
  1247. (cl-typecase x
  1248. (integer (munch-integer x))
  1249. (float (munch-float x))
  1250. (string (munch-integer (string-to-number x)))
  1251. (t (munch-anything x)))
  1252. @end example
  1253. The type specifier @code{t} matches any type of object; the word
  1254. @code{otherwise} is also allowed. To make one clause match any of
  1255. several types, use an @code{(or @dots{})} type specifier.
  1256. @end defmac
  1257. @defmac cl-etypecase keyform clause@dots{}
  1258. This macro is just like @code{cl-typecase}, except that if the key does
  1259. not match any of the clauses, an error is signaled rather than
  1260. simply returning @code{nil}.
  1261. @end defmac
  1262. @node Blocks and Exits
  1263. @section Blocks and Exits
  1264. @cindex block
  1265. @cindex exit
  1266. @noindent
  1267. Common Lisp @dfn{blocks} provide a non-local exit mechanism very
  1268. similar to @code{catch} and @code{throw}, with lexical scoping.
  1269. This package actually implements @code{cl-block}
  1270. in terms of @code{catch}; however, the lexical scoping allows the
  1271. byte-compiler to omit the costly @code{catch} step if the
  1272. body of the block does not actually @code{cl-return-from} the block.
  1273. @defmac cl-block name forms@dots{}
  1274. The @var{forms} are evaluated as if by a @code{progn}. However,
  1275. if any of the @var{forms} execute @code{(cl-return-from @var{name})},
  1276. they will jump out and return directly from the @code{cl-block} form.
  1277. The @code{cl-block} returns the result of the last @var{form} unless
  1278. a @code{cl-return-from} occurs.
  1279. The @code{cl-block}/@code{cl-return-from} mechanism is quite similar to
  1280. the @code{catch}/@code{throw} mechanism. The main differences are
  1281. that block @var{name}s are unevaluated symbols, rather than forms
  1282. (such as quoted symbols) that evaluate to a tag at run-time; and
  1283. also that blocks are always lexically scoped.
  1284. In a dynamically scoped @code{catch}, functions called from the
  1285. @code{catch} body can also @code{throw} to the @code{catch}. This
  1286. is not an option for @code{cl-block}, where
  1287. the @code{cl-return-from} referring to a block name must appear
  1288. physically within the @var{forms} that make up the body of the block.
  1289. They may not appear within other called functions, although they may
  1290. appear within macro expansions or @code{lambda}s in the body. Block
  1291. names and @code{catch} names form independent name-spaces.
  1292. In true Common Lisp, @code{defun} and @code{defmacro} surround
  1293. the function or expander bodies with implicit blocks with the
  1294. same name as the function or macro. This does not occur in Emacs
  1295. Lisp, but this package provides @code{cl-defun} and @code{cl-defmacro}
  1296. forms, which do create the implicit block.
  1297. The Common Lisp looping constructs defined by this package,
  1298. such as @code{cl-loop} and @code{cl-dolist}, also create implicit blocks
  1299. just as in Common Lisp.
  1300. Because they are implemented in terms of Emacs Lisp's @code{catch}
  1301. and @code{throw}, blocks have the same overhead as actual
  1302. @code{catch} constructs (roughly two function calls). However,
  1303. the byte compiler will optimize away the @code{catch}
  1304. if the block does
  1305. not in fact contain any @code{cl-return} or @code{cl-return-from} calls
  1306. that jump to it. This means that @code{cl-do} loops and @code{cl-defun}
  1307. functions that don't use @code{cl-return} don't pay the overhead to
  1308. support it.
  1309. @end defmac
  1310. @defmac cl-return-from name [result]
  1311. This macro returns from the block named @var{name}, which must be
  1312. an (unevaluated) symbol. If a @var{result} form is specified, it
  1313. is evaluated to produce the result returned from the @code{block}.
  1314. Otherwise, @code{nil} is returned.
  1315. @end defmac
  1316. @defmac cl-return [result]
  1317. This macro is exactly like @code{(cl-return-from nil @var{result})}.
  1318. Common Lisp loops like @code{cl-do} and @code{cl-dolist} implicitly enclose
  1319. themselves in @code{nil} blocks.
  1320. @end defmac
  1321. @c FIXME? Maybe this should be in a separate section?
  1322. @defmac cl-tagbody &rest labels-or-statements
  1323. This macro executes statements while allowing for control transfer to
  1324. user-defined labels. Each element of @var{labels-or-statements} can
  1325. be either a label (an integer or a symbol), or a cons-cell
  1326. (a statement). This distinction is made before macroexpansion.
  1327. Statements are executed in sequence, discarding any return value.
  1328. Any statement can transfer control at any time to the statements that follow
  1329. one of the labels with the special form @code{(go @var{label})}.
  1330. Labels have lexical scope and dynamic extent.
  1331. @end defmac
  1332. @node Iteration
  1333. @section Iteration
  1334. @cindex iteration
  1335. @noindent
  1336. The macros described here provide more sophisticated, high-level
  1337. looping constructs to complement Emacs Lisp's basic loop forms
  1338. (@pxref{Iteration,,,elisp,GNU Emacs Lisp Reference Manual}).
  1339. @defmac cl-loop forms@dots{}
  1340. This package supports both the simple, old-style meaning of
  1341. @code{loop} and the extremely powerful and flexible feature known as
  1342. the @dfn{Loop Facility} or @dfn{Loop Macro}. This more advanced
  1343. facility is discussed in the following section; @pxref{Loop Facility}.
  1344. The simple form of @code{loop} is described here.
  1345. If @code{cl-loop} is followed by zero or more Lisp expressions,
  1346. then @code{(cl-loop @var{exprs}@dots{})} simply creates an infinite
  1347. loop executing the expressions over and over. The loop is
  1348. enclosed in an implicit @code{nil} block. Thus,
  1349. @example
  1350. (cl-loop (foo) (if (no-more) (return 72)) (bar))
  1351. @end example
  1352. @noindent
  1353. is exactly equivalent to
  1354. @example
  1355. (cl-block nil (while t (foo) (if (no-more) (return 72)) (bar)))
  1356. @end example
  1357. If any of the expressions are plain symbols, the loop is instead
  1358. interpreted as a Loop Macro specification as described later.
  1359. (This is not a restriction in practice, since a plain symbol
  1360. in the above notation would simply access and throw away the
  1361. value of a variable.)
  1362. @end defmac
  1363. @defmac cl-do (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
  1364. This macro creates a general iterative loop. Each @var{spec} is
  1365. of the form
  1366. @example
  1367. (@var{var} [@var{init} [@var{step}]])
  1368. @end example
  1369. The loop works as follows: First, each @var{var} is bound to the
  1370. associated @var{init} value as if by a @code{let} form. Then, in
  1371. each iteration of the loop, the @var{end-test} is evaluated; if
  1372. true, the loop is finished. Otherwise, the body @var{forms} are
  1373. evaluated, then each @var{var} is set to the associated @var{step}
  1374. expression (as if by a @code{cl-psetq} form) and the next iteration
  1375. begins. Once the @var{end-test} becomes true, the @var{result}
  1376. forms are evaluated (with the @var{var}s still bound to their
  1377. values) to produce the result returned by @code{cl-do}.
  1378. The entire @code{cl-do} loop is enclosed in an implicit @code{nil}
  1379. block, so that you can use @code{(cl-return)} to break out of the
  1380. loop at any time.
  1381. If there are no @var{result} forms, the loop returns @code{nil}.
  1382. If a given @var{var} has no @var{step} form, it is bound to its
  1383. @var{init} value but not otherwise modified during the @code{cl-do}
  1384. loop (unless the code explicitly modifies it); this case is just
  1385. a shorthand for putting a @code{(let ((@var{var} @var{init})) @dots{})}
  1386. around the loop. If @var{init} is also omitted it defaults to
  1387. @code{nil}, and in this case a plain @samp{@var{var}} can be used
  1388. in place of @samp{(@var{var})}, again following the analogy with
  1389. @code{let}.
  1390. This example (from Steele) illustrates a loop that applies the
  1391. function @code{f} to successive pairs of values from the lists
  1392. @code{foo} and @code{bar}; it is equivalent to the call
  1393. @code{(cl-mapcar 'f foo bar)}. Note that this loop has no body
  1394. @var{forms} at all, performing all its work as side effects of
  1395. the rest of the loop.
  1396. @example
  1397. (cl-do ((x foo (cdr x))
  1398. (y bar (cdr y))
  1399. (z nil (cons (f (car x) (car y)) z)))
  1400. ((or (null x) (null y))
  1401. (nreverse z)))
  1402. @end example
  1403. @end defmac
  1404. @defmac cl-do* (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
  1405. This is to @code{cl-do} what @code{let*} is to @code{let}. In
  1406. particular, the initial values are bound as if by @code{let*}
  1407. rather than @code{let}, and the steps are assigned as if by
  1408. @code{setq} rather than @code{cl-psetq}.
  1409. Here is another way to write the above loop:
  1410. @example
  1411. (cl-do* ((xp foo (cdr xp))
  1412. (yp bar (cdr yp))
  1413. (x (car xp) (car xp))
  1414. (y (car yp) (car yp))
  1415. z)
  1416. ((or (null xp) (null yp))
  1417. (nreverse z))
  1418. (push (f x y) z))
  1419. @end example
  1420. @end defmac
  1421. @defmac cl-dolist (var list [result]) forms@dots{}
  1422. This is exactly like the standard Emacs Lisp macro @code{dolist},
  1423. but surrounds the loop with an implicit @code{nil} block.
  1424. @end defmac
  1425. @defmac cl-dotimes (var count [result]) forms@dots{}
  1426. This is exactly like the standard Emacs Lisp macro @code{dotimes},
  1427. but surrounds the loop with an implicit @code{nil} block.
  1428. The body is executed with @var{var} bound to the integers
  1429. from zero (inclusive) to @var{count} (exclusive), in turn. Then
  1430. @c FIXME lispref does not state this part explicitly, could move this there.
  1431. the @code{result} form is evaluated with @var{var} bound to the total
  1432. number of iterations that were done (i.e., @code{(max 0 @var{count})})
  1433. to get the return value for the loop form.
  1434. @end defmac
  1435. @defmac cl-do-symbols (var [obarray [result]]) forms@dots{}
  1436. This loop iterates over all interned symbols. If @var{obarray}
  1437. is specified and is not @code{nil}, it loops over all symbols in
  1438. that obarray. For each symbol, the body @var{forms} are evaluated
  1439. with @var{var} bound to that symbol. The symbols are visited in
  1440. an unspecified order. Afterward the @var{result} form, if any,
  1441. is evaluated (with @var{var} bound to @code{nil}) to get the return
  1442. value. The loop is surrounded by an implicit @code{nil} block.
  1443. @end defmac
  1444. @defmac cl-do-all-symbols (var [result]) forms@dots{}
  1445. This is identical to @code{cl-do-symbols} except that the @var{obarray}
  1446. argument is omitted; it always iterates over the default obarray.
  1447. @end defmac
  1448. @xref{Mapping over Sequences}, for some more functions for
  1449. iterating over vectors or lists.
  1450. @node Loop Facility
  1451. @section Loop Facility
  1452. @cindex loop facility
  1453. @noindent
  1454. A common complaint with Lisp's traditional looping constructs was
  1455. that they were either too simple and limited, such as @code{dotimes}
  1456. or @code{while}, or too unreadable and obscure, like Common Lisp's
  1457. @code{do} loop.
  1458. To remedy this, Common Lisp added a construct called the ``Loop
  1459. Facility'' or ``@code{loop} macro'', with an easy-to-use but very
  1460. powerful and expressive syntax.
  1461. @menu
  1462. * Loop Basics:: The @code{cl-loop} macro, basic clause structure.
  1463. * Loop Examples:: Working examples of the @code{cl-loop} macro.
  1464. * For Clauses:: Clauses introduced by @code{for} or @code{as}.
  1465. * Iteration Clauses:: @code{repeat}, @code{while}, @code{thereis}, etc.
  1466. * Accumulation Clauses:: @code{collect}, @code{sum}, @code{maximize}, etc.
  1467. * Other Clauses:: @code{with}, @code{if}, @code{initially}, @code{finally}.
  1468. @end menu
  1469. @node Loop Basics
  1470. @subsection Loop Basics
  1471. @noindent
  1472. The @code{cl-loop} macro essentially creates a mini-language within
  1473. Lisp that is specially tailored for describing loops. While this
  1474. language is a little strange-looking by the standards of regular Lisp,
  1475. it turns out to be very easy to learn and well-suited to its purpose.
  1476. Since @code{cl-loop} is a macro, all parsing of the loop language
  1477. takes place at byte-compile time; compiled @code{cl-loop}s are just
  1478. as efficient as the equivalent @code{while} loops written longhand.
  1479. @defmac cl-loop clauses@dots{}
  1480. A loop construct consists of a series of @var{clause}s, each
  1481. introduced by a symbol like @code{for} or @code{do}. Clauses
  1482. are simply strung together in the argument list of @code{cl-loop},
  1483. with minimal extra parentheses. The various types of clauses
  1484. specify initializations, such as the binding of temporary
  1485. variables, actions to be taken in the loop, stepping actions,
  1486. and final cleanup.
  1487. Common Lisp specifies a certain general order of clauses in a
  1488. loop:
  1489. @example
  1490. (loop @var{name-clause}
  1491. @var{var-clauses}@dots{}
  1492. @var{action-clauses}@dots{})
  1493. @end example
  1494. The @var{name-clause} optionally gives a name to the implicit
  1495. block that surrounds the loop. By default, the implicit block
  1496. is named @code{nil}. The @var{var-clauses} specify what
  1497. variables should be bound during the loop, and how they should
  1498. be modified or iterated throughout the course of the loop. The
  1499. @var{action-clauses} are things to be done during the loop, such
  1500. as computing, collecting, and returning values.
  1501. The Emacs version of the @code{cl-loop} macro is less restrictive about
  1502. the order of clauses, but things will behave most predictably if
  1503. you put the variable-binding clauses @code{with}, @code{for}, and
  1504. @code{repeat} before the action clauses. As in Common Lisp,
  1505. @code{initially} and @code{finally} clauses can go anywhere.
  1506. Loops generally return @code{nil} by default, but you can cause
  1507. them to return a value by using an accumulation clause like
  1508. @code{collect}, an end-test clause like @code{always}, or an
  1509. explicit @code{return} clause to jump out of the implicit block.
  1510. (Because the loop body is enclosed in an implicit block, you can
  1511. also use regular Lisp @code{cl-return} or @code{cl-return-from} to
  1512. break out of the loop.)
  1513. @end defmac
  1514. The following sections give some examples of the loop macro in
  1515. action, and describe the particular loop clauses in great detail.
  1516. Consult the second edition of Steele for additional discussion
  1517. and examples.
  1518. @node Loop Examples
  1519. @subsection Loop Examples
  1520. @noindent
  1521. Before listing the full set of clauses that are allowed, let's
  1522. look at a few example loops just to get a feel for the @code{cl-loop}
  1523. language.
  1524. @example
  1525. (cl-loop for buf in (buffer-list)
  1526. collect (buffer-file-name buf))
  1527. @end example
  1528. @noindent
  1529. This loop iterates over all Emacs buffers, using the list
  1530. returned by @code{buffer-list}. For each buffer @var{buf},
  1531. it calls @code{buffer-file-name} and collects the results into
  1532. a list, which is then returned from the @code{cl-loop} construct.
  1533. The result is a list of the file names of all the buffers in
  1534. Emacs's memory. The words @code{for}, @code{in}, and @code{collect}
  1535. are reserved words in the @code{cl-loop} language.
  1536. @example
  1537. (cl-loop repeat 20 do (insert "Yowsa\n"))
  1538. @end example
  1539. @noindent
  1540. This loop inserts the phrase ``Yowsa'' twenty times in the
  1541. current buffer.
  1542. @example
  1543. (cl-loop until (eobp) do (munch-line) (forward-line 1))
  1544. @end example
  1545. @noindent
  1546. This loop calls @code{munch-line} on every line until the end
  1547. of the buffer. If point is already at the end of the buffer,
  1548. the loop exits immediately.
  1549. @example
  1550. (cl-loop do (munch-line) until (eobp) do (forward-line 1))
  1551. @end example
  1552. @noindent
  1553. This loop is similar to the above one, except that @code{munch-line}
  1554. is always called at least once.
  1555. @example
  1556. (cl-loop for x from 1 to 100
  1557. for y = (* x x)
  1558. until (>= y 729)
  1559. finally return (list x (= y 729)))
  1560. @end example
  1561. @noindent
  1562. This more complicated loop searches for a number @code{x} whose
  1563. square is 729. For safety's sake it only examines @code{x}
  1564. values up to 100; dropping the phrase @samp{to 100} would
  1565. cause the loop to count upwards with no limit. The second
  1566. @code{for} clause defines @code{y} to be the square of @code{x}
  1567. within the loop; the expression after the @code{=} sign is
  1568. reevaluated each time through the loop. The @code{until}
  1569. clause gives a condition for terminating the loop, and the
  1570. @code{finally} clause says what to do when the loop finishes.
  1571. (This particular example was written less concisely than it
  1572. could have been, just for the sake of illustration.)
  1573. Note that even though this loop contains three clauses (two
  1574. @code{for}s and an @code{until}) that would have been enough to
  1575. define loops all by themselves, it still creates a single loop
  1576. rather than some sort of triple-nested loop. You must explicitly
  1577. nest your @code{cl-loop} constructs if you want nested loops.
  1578. @node For Clauses
  1579. @subsection For Clauses
  1580. @noindent
  1581. Most loops are governed by one or more @code{for} clauses.
  1582. A @code{for} clause simultaneously describes variables to be
  1583. bound, how those variables are to be stepped during the loop,
  1584. and usually an end condition based on those variables.
  1585. The word @code{as} is a synonym for the word @code{for}. This
  1586. word is followed by a variable name, then a word like @code{from}
  1587. or @code{across} that describes the kind of iteration desired.
  1588. In Common Lisp, the phrase @code{being the} sometimes precedes
  1589. the type of iteration; in this package both @code{being} and
  1590. @code{the} are optional. The word @code{each} is a synonym
  1591. for @code{the}, and the word that follows it may be singular
  1592. or plural: @samp{for x being the elements of y} or
  1593. @samp{for x being each element of y}. Which form you use
  1594. is purely a matter of style.
  1595. The variable is bound around the loop as if by @code{let}:
  1596. @example
  1597. (setq i 'happy)
  1598. (cl-loop for i from 1 to 10 do (do-something-with i))
  1599. i
  1600. @result{} happy
  1601. @end example
  1602. @table @code
  1603. @item for @var{var} from @var{expr1} to @var{expr2} by @var{expr3}
  1604. This type of @code{for} clause creates a counting loop. Each of
  1605. the three sub-terms is optional, though there must be at least one
  1606. term so that the clause is marked as a counting clause.
  1607. The three expressions are the starting value, the ending value, and
  1608. the step value, respectively, of the variable. The loop counts
  1609. upwards by default (@var{expr3} must be positive), from @var{expr1}
  1610. to @var{expr2} inclusively. If you omit the @code{from} term, the
  1611. loop counts from zero; if you omit the @code{to} term, the loop
  1612. counts forever without stopping (unless stopped by some other
  1613. loop clause, of course); if you omit the @code{by} term, the loop
  1614. counts in steps of one.
  1615. You can replace the word @code{from} with @code{upfrom} or
  1616. @code{downfrom} to indicate the direction of the loop. Likewise,
  1617. you can replace @code{to} with @code{upto} or @code{downto}.
  1618. For example, @samp{for x from 5 downto 1} executes five times
  1619. with @code{x} taking on the integers from 5 down to 1 in turn.
  1620. Also, you can replace @code{to} with @code{below} or @code{above},
  1621. which are like @code{upto} and @code{downto} respectively except
  1622. that they are exclusive rather than inclusive limits:
  1623. @example
  1624. (cl-loop for x to 10 collect x)
  1625. @result{} (0 1 2 3 4 5 6 7 8 9 10)
  1626. (cl-loop for x below 10 collect x)
  1627. @result{} (0 1 2 3 4 5 6 7 8 9)
  1628. @end example
  1629. The @code{by} value is always positive, even for downward-counting
  1630. loops. Some sort of @code{from} value is required for downward
  1631. loops; @samp{for x downto 5} is not a valid loop clause all by
  1632. itself.
  1633. @item for @var{var} in @var{list} by @var{function}
  1634. This clause iterates @var{var} over all the elements of @var{list},
  1635. in turn. If you specify the @code{by} term, then @var{function}
  1636. is used to traverse the list instead of @code{cdr}; it must be a
  1637. function taking one argument. For example:
  1638. @example
  1639. (cl-loop for x in '(1 2 3 4 5 6) collect (* x x))
  1640. @result{} (1 4 9 16 25 36)
  1641. (cl-loop for x in '(1 2 3 4 5 6) by 'cddr collect (* x x))
  1642. @result{} (1 9 25)
  1643. @end example
  1644. @item for @var{var} on @var{list} by @var{function}
  1645. This clause iterates @var{var} over all the cons cells of @var{list}.
  1646. @example
  1647. (cl-loop for x on '(1 2 3 4) collect x)
  1648. @result{} ((1 2 3 4) (2 3 4) (3 4) (4))
  1649. @end example
  1650. @item for @var{var} in-ref @var{list} by @var{function}
  1651. This is like a regular @code{in} clause, but @var{var} becomes
  1652. a @code{setf}-able ``reference'' onto the elements of the list
  1653. rather than just a temporary variable. For example,
  1654. @example
  1655. (cl-loop for x in-ref my-list do (cl-incf x))
  1656. @end example
  1657. @noindent
  1658. increments every element of @code{my-list} in place. This clause
  1659. is an extension to standard Common Lisp.
  1660. @item for @var{var} across @var{array}
  1661. This clause iterates @var{var} over all the elements of @var{array},
  1662. which may be a vector or a string.
  1663. @example
  1664. (cl-loop for x across "aeiou"
  1665. do (use-vowel (char-to-string x)))
  1666. @end example
  1667. @item for @var{var} across-ref @var{array}
  1668. This clause iterates over an array, with @var{var} a @code{setf}-able
  1669. reference onto the elements; see @code{in-ref} above.
  1670. @item for @var{var} being the elements of @var{sequence}
  1671. This clause iterates over the elements of @var{sequence}, which may
  1672. be a list, vector, or string. Since the type must be determined
  1673. at run-time, this is somewhat less efficient than @code{in} or
  1674. @code{across}. The clause may be followed by the additional term
  1675. @samp{using (index @var{var2})} to cause @var{var2} to be bound to
  1676. the successive indices (starting at 0) of the elements.
  1677. This clause type is taken from older versions of the @code{loop} macro,
  1678. and is not present in modern Common Lisp. The @samp{using (sequence @dots{})}
  1679. term of the older macros is not supported.
  1680. @item for @var{var} being the elements of-ref @var{sequence}
  1681. This clause iterates over a sequence, with @var{var} a @code{setf}-able
  1682. reference onto the elements; see @code{in-ref} above.
  1683. @item for @var{var} being the symbols [of @var{obarray}]
  1684. This clause iterates over symbols, either over all interned symbols
  1685. or over all symbols in @var{obarray}. The loop is executed with
  1686. @var{var} bound to each symbol in turn. The symbols are visited in
  1687. an unspecified order.
  1688. As an example,
  1689. @example
  1690. (cl-loop for sym being the symbols
  1691. when (fboundp sym)
  1692. when (string-match "^map" (symbol-name sym))
  1693. collect sym)
  1694. @end example
  1695. @noindent
  1696. returns a list of all the functions whose names begin with @samp{map}.
  1697. The Common Lisp words @code{external-symbols} and @code{present-symbols}
  1698. are also recognized but are equivalent to @code{symbols} in Emacs Lisp.
  1699. Due to a minor implementation restriction, it will not work to have
  1700. more than one @code{for} clause iterating over symbols, hash tables,
  1701. keymaps, overlays, or intervals in a given @code{cl-loop}. Fortunately,
  1702. it would rarely if ever be useful to do so. It @emph{is} valid to mix
  1703. one of these types of clauses with other clauses like @code{for @dots{} to}
  1704. or @code{while}.
  1705. @item for @var{var} being the hash-keys of @var{hash-table}
  1706. @itemx for @var{var} being the hash-values of @var{hash-table}
  1707. This clause iterates over the entries in @var{hash-table} with
  1708. @var{var} bound to each key, or value. A @samp{using} clause can bind
  1709. a second variable to the opposite part.
  1710. @example
  1711. (cl-loop for k being the hash-keys of h
  1712. using (hash-values v)
  1713. do
  1714. (message "key %S -> value %S" k v))
  1715. @end example
  1716. @item for @var{var} being the key-codes of @var{keymap}
  1717. @itemx for @var{var} being the key-bindings of @var{keymap}
  1718. This clause iterates over the entries in @var{keymap}.
  1719. The iteration does not enter nested keymaps but does enter inherited
  1720. (parent) keymaps.
  1721. A @code{using} clause can access both the codes and the bindings
  1722. together.
  1723. @example
  1724. (cl-loop for c being the key-codes of (current-local-map)
  1725. using (key-bindings b)
  1726. do
  1727. (message "key %S -> binding %S" c b))
  1728. @end example
  1729. @item for @var{var} being the key-seqs of @var{keymap}
  1730. This clause iterates over all key sequences defined by @var{keymap}
  1731. and its nested keymaps, where @var{var} takes on values which are
  1732. vectors. The strings or vectors
  1733. are reused for each iteration, so you must copy them if you wish to keep
  1734. them permanently. You can add a @samp{using (key-bindings @dots{})}
  1735. clause to get the command bindings as well.
  1736. @item for @var{var} being the overlays [of @var{buffer}] @dots{}
  1737. This clause iterates over the ``overlays'' of a buffer
  1738. (the clause @code{extents} is synonymous
  1739. with @code{overlays}). If the @code{of} term is omitted, the current
  1740. buffer is used.
  1741. This clause also accepts optional @samp{from @var{pos}} and
  1742. @samp{to @var{pos}} terms, limiting the clause to overlays which
  1743. overlap the specified region.
  1744. @item for @var{var} being the intervals [of @var{buffer}] @dots{}
  1745. This clause iterates over all intervals of a buffer with constant
  1746. text properties. The variable @var{var} will be bound to conses
  1747. of start and end positions, where one start position is always equal
  1748. to the previous end position. The clause allows @code{of},
  1749. @code{from}, @code{to}, and @code{property} terms, where the latter
  1750. term restricts the search to just the specified property. The
  1751. @code{of} term may specify either a buffer or a string.
  1752. @item for @var{var} being the frames
  1753. This clause iterates over all Emacs frames. The clause @code{screens} is
  1754. a synonym for @code{frames}. The frames are visited in
  1755. @code{next-frame} order starting from @code{selected-frame}.
  1756. @item for @var{var} being the windows [of @var{frame}]
  1757. This clause iterates over the windows (in the Emacs sense) of
  1758. the current frame, or of the specified @var{frame}. It visits windows
  1759. in @code{next-window} order starting from @code{selected-window}
  1760. (or @code{frame-selected-window} if you specify @var{frame}).
  1761. This clause treats the minibuffer window in the same way as
  1762. @code{next-window} does. For greater flexibility, consider using
  1763. @code{walk-windows} instead.
  1764. @item for @var{var} being the buffers
  1765. This clause iterates over all buffers in Emacs. It is equivalent
  1766. to @samp{for @var{var} in (buffer-list)}.
  1767. @item for @var{var} = @var{expr1} then @var{expr2}
  1768. This clause does a general iteration. The first time through
  1769. the loop, @var{var} will be bound to @var{expr1}. On the second
  1770. and successive iterations it will be set by evaluating @var{expr2}
  1771. (which may refer to the old value of @var{var}). For example,
  1772. these two loops are effectively the same:
  1773. @example
  1774. (cl-loop for x on my-list by 'cddr do @dots{})
  1775. (cl-loop for x = my-list then (cddr x) while x do @dots{})
  1776. @end example
  1777. Note that this type of @code{for} clause does not imply any sort
  1778. of terminating condition; the above example combines it with a
  1779. @code{while} clause to tell when to end the loop.
  1780. If you omit the @code{then} term, @var{expr1} is used both for
  1781. the initial setting and for successive settings:
  1782. @example
  1783. (cl-loop for x = (random) when (> x 0) return x)
  1784. @end example
  1785. @noindent
  1786. This loop keeps taking random numbers from the @code{(random)}
  1787. function until it gets a positive one, which it then returns.
  1788. @end table
  1789. If you include several @code{for} clauses in a row, they are
  1790. treated sequentially (as if by @code{let*} and @code{setq}).
  1791. You can instead use the word @code{and} to link the clauses,
  1792. in which case they are processed in parallel (as if by @code{let}
  1793. and @code{cl-psetq}).
  1794. @example
  1795. (cl-loop for x below 5 for y = nil then x collect (list x y))
  1796. @result{} ((0 nil) (1 1) (2 2) (3 3) (4 4))
  1797. (cl-loop for x below 5 and y = nil then x collect (list x y))
  1798. @result{} ((0 nil) (1 0) (2 1) (3 2) (4 3))
  1799. @end example
  1800. @noindent
  1801. In the first loop, @code{y} is set based on the value of @code{x}
  1802. that was just set by the previous clause; in the second loop,
  1803. @code{x} and @code{y} are set simultaneously so @code{y} is set
  1804. based on the value of @code{x} left over from the previous time
  1805. through the loop.
  1806. @cindex destructuring, in cl-loop
  1807. Another feature of the @code{cl-loop} macro is @emph{destructuring},
  1808. similar in concept to the destructuring provided by @code{defmacro}
  1809. (@pxref{Argument Lists}).
  1810. The @var{var} part of any @code{for} clause can be given as a list
  1811. of variables instead of a single variable. The values produced
  1812. during loop execution must be lists; the values in the lists are
  1813. stored in the corresponding variables.
  1814. @example
  1815. (cl-loop for (x y) in '((2 3) (4 5) (6 7)) collect (+ x y))
  1816. @result{} (5 9 13)
  1817. @end example
  1818. In loop destructuring, if there are more values than variables
  1819. the trailing values are ignored, and if there are more variables
  1820. than values the trailing variables get the value @code{nil}.
  1821. If @code{nil} is used as a variable name, the corresponding
  1822. values are ignored. Destructuring may be nested, and dotted
  1823. lists of variables like @code{(x . y)} are allowed, so for example
  1824. to process an alist
  1825. @example
  1826. (cl-loop for (key . value) in '((a . 1) (b . 2))
  1827. collect value)
  1828. @result{} (1 2)
  1829. @end example
  1830. @node Iteration Clauses
  1831. @subsection Iteration Clauses
  1832. @noindent
  1833. Aside from @code{for} clauses, there are several other loop clauses
  1834. that control the way the loop operates. They might be used by
  1835. themselves, or in conjunction with one or more @code{for} clauses.
  1836. @table @code
  1837. @item repeat @var{integer}
  1838. This clause simply counts up to the specified number using an
  1839. internal temporary variable. The loops
  1840. @example
  1841. (cl-loop repeat (1+ n) do @dots{})
  1842. (cl-loop for temp to n do @dots{})
  1843. @end example
  1844. @noindent
  1845. are identical except that the second one forces you to choose
  1846. a name for a variable you aren't actually going to use.
  1847. @item while @var{condition}
  1848. This clause stops the loop when the specified condition (any Lisp
  1849. expression) becomes @code{nil}. For example, the following two
  1850. loops are equivalent, except for the implicit @code{nil} block
  1851. that surrounds the second one:
  1852. @example
  1853. (while @var{cond} @var{forms}@dots{})
  1854. (cl-loop while @var{cond} do @var{forms}@dots{})
  1855. @end example
  1856. @item until @var{condition}
  1857. This clause stops the loop when the specified condition is true,
  1858. i.e., non-@code{nil}.
  1859. @item always @var{condition}
  1860. This clause stops the loop when the specified condition is @code{nil}.
  1861. Unlike @code{while}, it stops the loop using @code{return nil} so that
  1862. the @code{finally} clauses are not executed. If all the conditions
  1863. were non-@code{nil}, the loop returns @code{t}:
  1864. @example
  1865. (if (cl-loop for size in size-list always (> size 10))
  1866. (only-big-sizes)
  1867. (some-small-sizes))
  1868. @end example
  1869. @item never @var{condition}
  1870. This clause is like @code{always}, except that the loop returns
  1871. @code{t} if any conditions were false, or @code{nil} otherwise.
  1872. @item thereis @var{condition}
  1873. This clause stops the loop when the specified form is non-@code{nil};
  1874. in this case, it returns that non-@code{nil} value. If all the
  1875. values were @code{nil}, the loop returns @code{nil}.
  1876. @item iter-by @var{iterator}
  1877. This clause iterates over the values from the specified form, an
  1878. iterator object. See (@pxref{Generators,,,elisp,GNU Emacs Lisp
  1879. Reference Manual}).
  1880. @end table
  1881. @node Accumulation Clauses
  1882. @subsection Accumulation Clauses
  1883. @noindent
  1884. These clauses cause the loop to accumulate information about the
  1885. specified Lisp @var{form}. The accumulated result is returned
  1886. from the loop unless overridden, say, by a @code{return} clause.
  1887. @table @code
  1888. @item collect @var{form}
  1889. This clause collects the values of @var{form} into a list. Several
  1890. examples of @code{collect} appear elsewhere in this manual.
  1891. The word @code{collecting} is a synonym for @code{collect}, and
  1892. likewise for the other accumulation clauses.
  1893. @item append @var{form}
  1894. This clause collects lists of values into a result list using
  1895. @code{append}.
  1896. @item nconc @var{form}
  1897. This clause collects lists of values into a result list by
  1898. destructively modifying the lists rather than copying them.
  1899. @item concat @var{form}
  1900. This clause concatenates the values of the specified @var{form}
  1901. into a string. (It and the following clause are extensions to
  1902. standard Common Lisp.)
  1903. @item vconcat @var{form}
  1904. This clause concatenates the values of the specified @var{form}
  1905. into a vector.
  1906. @item count @var{form}
  1907. This clause counts the number of times the specified @var{form}
  1908. evaluates to a non-@code{nil} value.
  1909. @item sum @var{form}
  1910. This clause accumulates the sum of the values of the specified
  1911. @var{form}, which must evaluate to a number.
  1912. @item maximize @var{form}
  1913. This clause accumulates the maximum value of the specified @var{form},
  1914. which must evaluate to a number. The return value is undefined if
  1915. @code{maximize} is executed zero times.
  1916. @item minimize @var{form}
  1917. This clause accumulates the minimum value of the specified @var{form}.
  1918. @end table
  1919. Accumulation clauses can be followed by @samp{into @var{var}} to
  1920. cause the data to be collected into variable @var{var} (which is
  1921. automatically @code{let}-bound during the loop) rather than an
  1922. unnamed temporary variable. Also, @code{into} accumulations do
  1923. not automatically imply a return value. The loop must use some
  1924. explicit mechanism, such as @code{finally return}, to return
  1925. the accumulated result.
  1926. It is valid for several accumulation clauses of the same type to
  1927. accumulate into the same place. From Steele:
  1928. @example
  1929. (cl-loop for name in '(fred sue alice joe june)
  1930. for kids in '((bob ken) () () (kris sunshine) ())
  1931. collect name
  1932. append kids)
  1933. @result{} (fred bob ken sue alice joe kris sunshine june)
  1934. @end example
  1935. @node Other Clauses
  1936. @subsection Other Clauses
  1937. @noindent
  1938. This section describes the remaining loop clauses.
  1939. @table @code
  1940. @item with @var{var} = @var{value}
  1941. This clause binds a variable to a value around the loop, but
  1942. otherwise leaves the variable alone during the loop. The following
  1943. loops are basically equivalent:
  1944. @example
  1945. (cl-loop with x = 17 do @dots{})
  1946. (let ((x 17)) (cl-loop do @dots{}))
  1947. (cl-loop for x = 17 then x do @dots{})
  1948. @end example
  1949. Naturally, the variable @var{var} might be used for some purpose
  1950. in the rest of the loop. For example:
  1951. @example
  1952. (cl-loop for x in my-list with res = nil do (push x res)
  1953. finally return res)
  1954. @end example
  1955. This loop inserts the elements of @code{my-list} at the front of
  1956. a new list being accumulated in @code{res}, then returns the
  1957. list @code{res} at the end of the loop. The effect is similar
  1958. to that of a @code{collect} clause, but the list gets reversed
  1959. by virtue of the fact that elements are being pushed onto the
  1960. front of @code{res} rather than the end.
  1961. If you omit the @code{=} term, the variable is initialized to
  1962. @code{nil}. (Thus the @samp{= nil} in the above example is
  1963. unnecessary.)
  1964. Bindings made by @code{with} are sequential by default, as if
  1965. by @code{let*}. Just like @code{for} clauses, @code{with} clauses
  1966. can be linked with @code{and} to cause the bindings to be made by
  1967. @code{let} instead.
  1968. @item if @var{condition} @var{clause}
  1969. This clause executes the following loop clause only if the specified
  1970. condition is true. The following @var{clause} should be an accumulation,
  1971. @code{do}, @code{return}, @code{if}, or @code{unless} clause.
  1972. Several clauses may be linked by separating them with @code{and}.
  1973. These clauses may be followed by @code{else} and a clause or clauses
  1974. to execute if the condition was false. The whole construct may
  1975. optionally be followed by the word @code{end} (which may be used to
  1976. disambiguate an @code{else} or @code{and} in a nested @code{if}).
  1977. The actual non-@code{nil} value of the condition form is available
  1978. by the name @code{it} in the ``then'' part. For example:
  1979. @example
  1980. (setq funny-numbers '(6 13 -1))
  1981. @result{} (6 13 -1)
  1982. (cl-loop for x below 10
  1983. if (cl-oddp x)
  1984. collect x into odds
  1985. and if (memq x funny-numbers) return (cdr it) end
  1986. else
  1987. collect x into evens
  1988. finally return (vector odds evens))
  1989. @result{} [(1 3 5 7 9) (0 2 4 6 8)]
  1990. (setq funny-numbers '(6 7 13 -1))
  1991. @result{} (6 7 13 -1)
  1992. (cl-loop <@r{same thing again}>)
  1993. @result{} (13 -1)
  1994. @end example
  1995. Note the use of @code{and} to put two clauses into the ``then''
  1996. part, one of which is itself an @code{if} clause. Note also that
  1997. @code{end}, while normally optional, was necessary here to make
  1998. it clear that the @code{else} refers to the outermost @code{if}
  1999. clause. In the first case, the loop returns a vector of lists
  2000. of the odd and even values of @var{x}. In the second case, the
  2001. odd number 7 is one of the @code{funny-numbers} so the loop
  2002. returns early; the actual returned value is based on the result
  2003. of the @code{memq} call.
  2004. @item when @var{condition} @var{clause}
  2005. This clause is just a synonym for @code{if}.
  2006. @item unless @var{condition} @var{clause}
  2007. The @code{unless} clause is just like @code{if} except that the
  2008. sense of the condition is reversed.
  2009. @item named @var{name}
  2010. This clause gives a name other than @code{nil} to the implicit
  2011. block surrounding the loop. The @var{name} is the symbol to be
  2012. used as the block name.
  2013. @item initially [do] @var{forms}@dots{}
  2014. This keyword introduces one or more Lisp forms which will be
  2015. executed before the loop itself begins (but after any variables
  2016. requested by @code{for} or @code{with} have been bound to their
  2017. initial values). @code{initially} clauses can appear anywhere;
  2018. if there are several, they are executed in the order they appear
  2019. in the loop. The keyword @code{do} is optional.
  2020. @item finally [do] @var{forms}@dots{}
  2021. This introduces Lisp forms which will be executed after the loop
  2022. finishes (say, on request of a @code{for} or @code{while}).
  2023. @code{initially} and @code{finally} clauses may appear anywhere
  2024. in the loop construct, but they are executed (in the specified
  2025. order) at the beginning or end, respectively, of the loop.
  2026. @item finally return @var{form}
  2027. This says that @var{form} should be executed after the loop
  2028. is done to obtain a return value. (Without this, or some other
  2029. clause like @code{collect} or @code{return}, the loop will simply
  2030. return @code{nil}.) Variables bound by @code{for}, @code{with},
  2031. or @code{into} will still contain their final values when @var{form}
  2032. is executed.
  2033. @item do @var{forms}@dots{}
  2034. The word @code{do} may be followed by any number of Lisp expressions
  2035. which are executed as an implicit @code{progn} in the body of the
  2036. loop. Many of the examples in this section illustrate the use of
  2037. @code{do}.
  2038. @item return @var{form}
  2039. This clause causes the loop to return immediately. The following
  2040. Lisp form is evaluated to give the return value of the loop
  2041. form. The @code{finally} clauses, if any, are not executed.
  2042. Of course, @code{return} is generally used inside an @code{if} or
  2043. @code{unless}, as its use in a top-level loop clause would mean
  2044. the loop would never get to ``loop'' more than once.
  2045. The clause @samp{return @var{form}} is equivalent to
  2046. @samp{do (cl-return @var{form})} (or @code{cl-return-from} if the loop
  2047. was named). The @code{return} clause is implemented a bit more
  2048. efficiently, though.
  2049. @end table
  2050. While there is no high-level way to add user extensions to @code{cl-loop},
  2051. this package does offer two properties called @code{cl-loop-handler}
  2052. and @code{cl-loop-for-handler} which are functions to be called when a
  2053. given symbol is encountered as a top-level loop clause or @code{for}
  2054. clause, respectively. Consult the source code in file
  2055. @file{cl-macs.el} for details.
  2056. This package's @code{cl-loop} macro is compatible with that of Common
  2057. Lisp, except that a few features are not implemented: @code{loop-finish}
  2058. and data-type specifiers. Naturally, the @code{for} clauses that
  2059. iterate over keymaps, overlays, intervals, frames, windows, and
  2060. buffers are Emacs-specific extensions.
  2061. @node Multiple Values
  2062. @section Multiple Values
  2063. @cindex multiple values
  2064. @noindent
  2065. Common Lisp functions can return zero or more results. Emacs Lisp
  2066. functions, by contrast, always return exactly one result. This
  2067. package makes no attempt to emulate Common Lisp multiple return
  2068. values; Emacs versions of Common Lisp functions that return more
  2069. than one value either return just the first value (as in
  2070. @code{cl-compiler-macroexpand}) or return a list of values.
  2071. This package @emph{does} define placeholders
  2072. for the Common Lisp functions that work with multiple values, but
  2073. in Emacs Lisp these functions simply operate on lists instead.
  2074. The @code{cl-values} form, for example, is a synonym for @code{list}
  2075. in Emacs.
  2076. @defmac cl-multiple-value-bind (var@dots{}) values-form forms@dots{}
  2077. This form evaluates @var{values-form}, which must return a list of
  2078. values. It then binds the @var{var}s to these respective values,
  2079. as if by @code{let}, and then executes the body @var{forms}.
  2080. If there are more @var{var}s than values, the extra @var{var}s
  2081. are bound to @code{nil}. If there are fewer @var{var}s than
  2082. values, the excess values are ignored.
  2083. @end defmac
  2084. @defmac cl-multiple-value-setq (var@dots{}) form
  2085. This form evaluates @var{form}, which must return a list of values.
  2086. It then sets the @var{var}s to these respective values, as if by
  2087. @code{setq}. Extra @var{var}s or values are treated the same as
  2088. in @code{cl-multiple-value-bind}.
  2089. @end defmac
  2090. Since a perfect emulation is not feasible in Emacs Lisp, this
  2091. package opts to keep it as simple and predictable as possible.
  2092. @node Macros
  2093. @chapter Macros
  2094. @noindent
  2095. This package implements the various Common Lisp features of
  2096. @code{defmacro}, such as destructuring, @code{&environment},
  2097. and @code{&body}. Top-level @code{&whole} is not implemented
  2098. for @code{defmacro} due to technical difficulties.
  2099. @xref{Argument Lists}.
  2100. Destructuring is made available to the user by way of the
  2101. following macro:
  2102. @defmac cl-destructuring-bind arglist expr forms@dots{}
  2103. This macro expands to code that executes @var{forms}, with
  2104. the variables in @var{arglist} bound to the list of values
  2105. returned by @var{expr}. The @var{arglist} can include all
  2106. the features allowed for @code{cl-defmacro} argument lists,
  2107. including destructuring. (The @code{&environment} keyword
  2108. is not allowed.) The macro expansion will signal an error
  2109. if @var{expr} returns a list of the wrong number of arguments
  2110. or with incorrect keyword arguments.
  2111. @end defmac
  2112. @cindex compiler macros
  2113. @cindex define compiler macros
  2114. This package also includes the Common Lisp @code{define-compiler-macro}
  2115. facility, which allows you to define compile-time expansions and
  2116. optimizations for your functions.
  2117. @defmac cl-define-compiler-macro name arglist forms@dots{}
  2118. This form is similar to @code{defmacro}, except that it only expands
  2119. calls to @var{name} at compile-time; calls processed by the Lisp
  2120. interpreter are not expanded, nor are they expanded by the
  2121. @code{macroexpand} function.
  2122. The argument list may begin with a @code{&whole} keyword and a
  2123. variable. This variable is bound to the macro-call form itself,
  2124. i.e., to a list of the form @samp{(@var{name} @var{args}@dots{})}.
  2125. If the macro expander returns this form unchanged, then the
  2126. compiler treats it as a normal function call. This allows
  2127. compiler macros to work as optimizers for special cases of a
  2128. function, leaving complicated cases alone.
  2129. For example, here is a simplified version of a definition that
  2130. appears as a standard part of this package:
  2131. @example
  2132. (cl-define-compiler-macro cl-member (&whole form a list &rest keys)
  2133. (if (and (null keys)
  2134. (eq (car-safe a) 'quote)
  2135. (not (floatp (cadr a))))
  2136. (list 'memq a list)
  2137. form))
  2138. @end example
  2139. @noindent
  2140. This definition causes @code{(cl-member @var{a} @var{list})} to change
  2141. to a call to the faster @code{memq} in the common case where @var{a}
  2142. is a non-floating-point constant; if @var{a} is anything else, or
  2143. if there are any keyword arguments in the call, then the original
  2144. @code{cl-member} call is left intact. (The actual compiler macro
  2145. for @code{cl-member} optimizes a number of other cases, including
  2146. common @code{:test} predicates.)
  2147. @end defmac
  2148. @defun cl-compiler-macroexpand form
  2149. This function is analogous to @code{macroexpand}, except that it
  2150. expands compiler macros rather than regular macros. It returns
  2151. @var{form} unchanged if it is not a call to a function for which
  2152. a compiler macro has been defined, or if that compiler macro
  2153. decided to punt by returning its @code{&whole} argument. Like
  2154. @code{macroexpand}, it expands repeatedly until it reaches a form
  2155. for which no further expansion is possible.
  2156. @end defun
  2157. @xref{Macro Bindings}, for descriptions of the @code{cl-macrolet}
  2158. and @code{cl-symbol-macrolet} forms for making ``local'' macro
  2159. definitions.
  2160. @node Declarations
  2161. @chapter Declarations
  2162. @noindent
  2163. Common Lisp includes a complex and powerful ``declaration''
  2164. mechanism that allows you to give the compiler special hints
  2165. about the types of data that will be stored in particular variables,
  2166. and about the ways those variables and functions will be used. This
  2167. package defines versions of all the Common Lisp declaration forms:
  2168. @code{declare}, @code{locally}, @code{proclaim}, @code{declaim},
  2169. and @code{the}.
  2170. Most of the Common Lisp declarations are not currently useful in Emacs
  2171. Lisp. For example, the byte-code system provides little
  2172. opportunity to benefit from type information.
  2173. @ignore
  2174. and @code{special} declarations are redundant in a fully
  2175. dynamically-scoped Lisp.
  2176. @end ignore
  2177. A few declarations are meaningful when byte compiler optimizations
  2178. are enabled, as they are by the default. Otherwise these
  2179. declarations will effectively be ignored.
  2180. @defun cl-proclaim decl-spec
  2181. This function records a ``global'' declaration specified by
  2182. @var{decl-spec}. Since @code{cl-proclaim} is a function, @var{decl-spec}
  2183. is evaluated and thus should normally be quoted.
  2184. @end defun
  2185. @defmac cl-declaim decl-specs@dots{}
  2186. This macro is like @code{cl-proclaim}, except that it takes any number
  2187. of @var{decl-spec} arguments, and the arguments are unevaluated and
  2188. unquoted. The @code{cl-declaim} macro also puts @code{(cl-eval-when
  2189. (compile load eval) @dots{})} around the declarations so that they will
  2190. be registered at compile-time as well as at run-time. (This is vital,
  2191. since normally the declarations are meant to influence the way the
  2192. compiler treats the rest of the file that contains the @code{cl-declaim}
  2193. form.)
  2194. @end defmac
  2195. @defmac cl-declare decl-specs@dots{}
  2196. This macro is used to make declarations within functions and other
  2197. code. Common Lisp allows declarations in various locations, generally
  2198. at the beginning of any of the many ``implicit @code{progn}s''
  2199. throughout Lisp syntax, such as function bodies, @code{let} bodies,
  2200. etc. Currently the only declaration understood by @code{cl-declare}
  2201. is @code{special}.
  2202. @end defmac
  2203. @defmac cl-locally declarations@dots{} forms@dots{}
  2204. In this package, @code{cl-locally} is no different from @code{progn}.
  2205. @end defmac
  2206. @defmac cl-the type form
  2207. @code{cl-the} returns the value of @code{form}, first checking (if
  2208. optimization settings permit) that it is of type @code{type}. Future
  2209. byte-compiler optimizations may also make use of this information to
  2210. improve runtime efficiency.
  2211. For example, @code{mapcar} can map over both lists and arrays. It is
  2212. hard for the compiler to expand @code{mapcar} into an in-line loop
  2213. unless it knows whether the sequence will be a list or an array ahead
  2214. of time. With @code{(mapcar 'car (cl-the vector foo))}, a future
  2215. compiler would have enough information to expand the loop in-line.
  2216. For now, Emacs Lisp will treat the above code as exactly equivalent
  2217. to @code{(mapcar 'car foo)}.
  2218. @end defmac
  2219. Each @var{decl-spec} in a @code{cl-proclaim}, @code{cl-declaim}, or
  2220. @code{cl-declare} should be a list beginning with a symbol that says
  2221. what kind of declaration it is. This package currently understands
  2222. @code{special}, @code{inline}, @code{notinline}, @code{optimize},
  2223. and @code{warn} declarations. (The @code{warn} declaration is an
  2224. extension of standard Common Lisp.) Other Common Lisp declarations,
  2225. such as @code{type} and @code{ftype}, are silently ignored.
  2226. @table @code
  2227. @item special
  2228. @c FIXME ?
  2229. Since all variables in Emacs Lisp are ``special'' (in the Common
  2230. Lisp sense), @code{special} declarations are only advisory. They
  2231. simply tell the byte compiler that the specified
  2232. variables are intentionally being referred to without being
  2233. bound in the body of the function. The compiler normally emits
  2234. warnings for such references, since they could be typographical
  2235. errors for references to local variables.
  2236. The declaration @code{(cl-declare (special @var{var1} @var{var2}))} is
  2237. equivalent to @code{(defvar @var{var1}) (defvar @var{var2})}.
  2238. In top-level contexts, it is generally better to write
  2239. @code{(defvar @var{var})} than @code{(cl-declaim (special @var{var}))},
  2240. since @code{defvar} makes your intentions clearer.
  2241. @item inline
  2242. The @code{inline} @var{decl-spec} lists one or more functions
  2243. whose bodies should be expanded ``in-line'' into calling functions
  2244. whenever the compiler is able to arrange for it. For example,
  2245. the function @code{cl-acons} is declared @code{inline}
  2246. by this package so that the form @code{(cl-acons @var{key} @var{value}
  2247. @var{alist})} will
  2248. expand directly into @code{(cons (cons @var{key} @var{value}) @var{alist})}
  2249. when it is called in user functions, so as to save function calls.
  2250. The following declarations are all equivalent. Note that the
  2251. @code{defsubst} form is a convenient way to define a function
  2252. and declare it inline all at once.
  2253. @example
  2254. (cl-declaim (inline foo bar))
  2255. (cl-eval-when (compile load eval)
  2256. (cl-proclaim '(inline foo bar)))
  2257. (defsubst foo (@dots{}) @dots{}) ; instead of defun
  2258. @end example
  2259. @strong{Please note:} this declaration remains in effect after the
  2260. containing source file is done. It is correct to use it to
  2261. request that a function you have defined should be inlined,
  2262. but it is impolite to use it to request inlining of an external
  2263. function.
  2264. In Common Lisp, it is possible to use @code{(declare (inline @dots{}))}
  2265. before a particular call to a function to cause just that call to
  2266. be inlined; the current byte compilers provide no way to implement
  2267. this, so @code{(cl-declare (inline @dots{}))} is currently ignored by
  2268. this package.
  2269. @item notinline
  2270. The @code{notinline} declaration lists functions which should
  2271. not be inlined after all; it cancels a previous @code{inline}
  2272. declaration.
  2273. @item optimize
  2274. This declaration controls how much optimization is performed by
  2275. the compiler.
  2276. The word @code{optimize} is followed by any number of lists like
  2277. @code{(speed 3)} or @code{(safety 2)}. Common Lisp defines several
  2278. optimization ``qualities''; this package ignores all but @code{speed}
  2279. and @code{safety}. The value of a quality should be an integer from
  2280. 0 to 3, with 0 meaning ``unimportant'' and 3 meaning ``very important''.
  2281. The default level for both qualities is 1.
  2282. In this package, the @code{speed} quality is tied to the @code{byte-optimize}
  2283. flag, which is set to @code{nil} for @code{(speed 0)} and to
  2284. @code{t} for higher settings; and the @code{safety} quality is
  2285. tied to the @code{byte-compile-delete-errors} flag, which is
  2286. set to @code{nil} for @code{(safety 3)} and to @code{t} for all
  2287. lower settings. (The latter flag controls whether the compiler
  2288. is allowed to optimize out code whose only side-effect could
  2289. be to signal an error, e.g., rewriting @code{(progn foo bar)} to
  2290. @code{bar} when it is not known whether @code{foo} will be bound
  2291. at run-time.)
  2292. Note that even compiling with @code{(safety 0)}, the Emacs
  2293. byte-code system provides sufficient checking to prevent real
  2294. harm from being done. For example, barring serious bugs in
  2295. Emacs itself, Emacs will not crash with a segmentation fault
  2296. just because of an error in a fully-optimized Lisp program.
  2297. The @code{optimize} declaration is normally used in a top-level
  2298. @code{cl-proclaim} or @code{cl-declaim} in a file; Common Lisp allows
  2299. it to be used with @code{declare} to set the level of optimization
  2300. locally for a given form, but this will not work correctly with the
  2301. current byte-compiler. (The @code{cl-declare}
  2302. will set the new optimization level, but that level will not
  2303. automatically be unset after the enclosing form is done.)
  2304. @item warn
  2305. This declaration controls what sorts of warnings are generated
  2306. by the byte compiler. The word @code{warn} is followed by any
  2307. number of ``warning qualities'', similar in form to optimization
  2308. qualities. The currently supported warning types are
  2309. @code{redefine}, @code{callargs}, @code{unresolved}, and
  2310. @code{free-vars}; in the current system, a value of 0 will
  2311. disable these warnings and any higher value will enable them.
  2312. See the documentation of the variable @code{byte-compile-warnings}
  2313. for more details.
  2314. @end table
  2315. @node Symbols
  2316. @chapter Symbols
  2317. @noindent
  2318. This package defines several symbol-related features that were
  2319. missing from Emacs Lisp.
  2320. @menu
  2321. * Property Lists:: @code{cl-get}, @code{cl-remprop}, @code{cl-getf}, @code{cl-remf}.
  2322. * Creating Symbols:: @code{cl-gensym}, @code{cl-gentemp}.
  2323. @end menu
  2324. @node Property Lists
  2325. @section Property Lists
  2326. @noindent
  2327. These functions augment the standard Emacs Lisp functions @code{get}
  2328. and @code{put} for operating on properties attached to symbols.
  2329. There are also functions for working with property lists as
  2330. first-class data structures not attached to particular symbols.
  2331. @defun cl-get symbol property &optional default
  2332. This function is like @code{get}, except that if the property is
  2333. not found, the @var{default} argument provides the return value.
  2334. (The Emacs Lisp @code{get} function always uses @code{nil} as
  2335. the default; this package's @code{cl-get} is equivalent to Common
  2336. Lisp's @code{get}.)
  2337. The @code{cl-get} function is @code{setf}-able; when used in this
  2338. fashion, the @var{default} argument is allowed but ignored.
  2339. @end defun
  2340. @defun cl-remprop symbol property
  2341. This function removes the entry for @var{property} from the property
  2342. list of @var{symbol}. It returns a true value if the property was
  2343. indeed found and removed, or @code{nil} if there was no such property.
  2344. (This function was probably omitted from Emacs originally because,
  2345. since @code{get} did not allow a @var{default}, it was very difficult
  2346. to distinguish between a missing property and a property whose value
  2347. was @code{nil}; thus, setting a property to @code{nil} was close
  2348. enough to @code{cl-remprop} for most purposes.)
  2349. @end defun
  2350. @defun cl-getf place property &optional default
  2351. This function scans the list @var{place} as if it were a property
  2352. list, i.e., a list of alternating property names and values. If
  2353. an even-numbered element of @var{place} is found which is @code{eq}
  2354. to @var{property}, the following odd-numbered element is returned.
  2355. Otherwise, @var{default} is returned (or @code{nil} if no default
  2356. is given).
  2357. In particular,
  2358. @example
  2359. (get sym prop) @equiv{} (cl-getf (symbol-plist sym) prop)
  2360. @end example
  2361. It is valid to use @code{cl-getf} as a @code{setf} place, in which case
  2362. its @var{place} argument must itself be a valid @code{setf} place.
  2363. The @var{default} argument, if any, is ignored in this context.
  2364. The effect is to change (via @code{setcar}) the value cell in the
  2365. list that corresponds to @var{property}, or to cons a new property-value
  2366. pair onto the list if the property is not yet present.
  2367. @example
  2368. (put sym prop val) @equiv{} (setf (cl-getf (symbol-plist sym) prop) val)
  2369. @end example
  2370. The @code{get} and @code{cl-get} functions are also @code{setf}-able.
  2371. The fact that @code{default} is ignored can sometimes be useful:
  2372. @example
  2373. (cl-incf (cl-get 'foo 'usage-count 0))
  2374. @end example
  2375. Here, symbol @code{foo}'s @code{usage-count} property is incremented
  2376. if it exists, or set to 1 (an incremented 0) otherwise.
  2377. When not used as a @code{setf} form, @code{cl-getf} is just a regular
  2378. function and its @var{place} argument can actually be any Lisp
  2379. expression.
  2380. @end defun
  2381. @defmac cl-remf place property
  2382. This macro removes the property-value pair for @var{property} from
  2383. the property list stored at @var{place}, which is any @code{setf}-able
  2384. place expression. It returns true if the property was found. Note
  2385. that if @var{property} happens to be first on the list, this will
  2386. effectively do a @code{(setf @var{place} (cddr @var{place}))},
  2387. whereas if it occurs later, this simply uses @code{setcdr} to splice
  2388. out the property and value cells.
  2389. @end defmac
  2390. @node Creating Symbols
  2391. @section Creating Symbols
  2392. @noindent
  2393. These functions create unique symbols, typically for use as
  2394. temporary variables.
  2395. @defun cl-gensym &optional x
  2396. This function creates a new, uninterned symbol (using @code{make-symbol})
  2397. with a unique name. (The name of an uninterned symbol is relevant
  2398. only if the symbol is printed.) By default, the name is generated
  2399. from an increasing sequence of numbers, @samp{G1000}, @samp{G1001},
  2400. @samp{G1002}, etc. If the optional argument @var{x} is a string, that
  2401. string is used as a prefix instead of @samp{G}. Uninterned symbols
  2402. are used in macro expansions for temporary variables, to ensure that
  2403. their names will not conflict with ``real'' variables in the user's
  2404. code.
  2405. (Internally, the variable @code{cl--gensym-counter} holds the counter
  2406. used to generate names. It is initialized with zero and incremented
  2407. after each use.)
  2408. @end defun
  2409. @defun cl-gentemp &optional x
  2410. This function is like @code{cl-gensym}, except that it produces a new
  2411. @emph{interned} symbol. If the symbol that is generated already
  2412. exists, the function keeps incrementing the counter and trying
  2413. again until a new symbol is generated.
  2414. @end defun
  2415. This package automatically creates all keywords that are called for by
  2416. @code{&key} argument specifiers, and discourages the use of keywords
  2417. as data unrelated to keyword arguments, so the related function
  2418. @code{defkeyword} (to create self-quoting keyword symbols) is not
  2419. provided.
  2420. @node Numbers
  2421. @chapter Numbers
  2422. @noindent
  2423. This section defines a few simple Common Lisp operations on numbers
  2424. that were left out of Emacs Lisp.
  2425. @menu
  2426. * Predicates on Numbers:: @code{cl-plusp}, @code{cl-oddp}, etc.
  2427. * Numerical Functions:: @code{cl-floor}, @code{cl-ceiling}, etc.
  2428. * Random Numbers:: @code{cl-random}, @code{cl-make-random-state}.
  2429. * Implementation Parameters:: @code{cl-most-positive-float}, etc.
  2430. @end menu
  2431. @node Predicates on Numbers
  2432. @section Predicates on Numbers
  2433. @noindent
  2434. These functions return @code{t} if the specified condition is
  2435. true of the numerical argument, or @code{nil} otherwise.
  2436. @defun cl-plusp number
  2437. This predicate tests whether @var{number} is positive. It is an
  2438. error if the argument is not a number.
  2439. @end defun
  2440. @defun cl-minusp number
  2441. This predicate tests whether @var{number} is negative. It is an
  2442. error if the argument is not a number.
  2443. @end defun
  2444. @defun cl-oddp integer
  2445. This predicate tests whether @var{integer} is odd. It is an
  2446. error if the argument is not an integer.
  2447. @end defun
  2448. @defun cl-evenp integer
  2449. This predicate tests whether @var{integer} is even. It is an
  2450. error if the argument is not an integer.
  2451. @end defun
  2452. @defun cl-digit-char-p char radix
  2453. Test if @var{char} is a digit in the specified @var{radix} (default is
  2454. 10). If it is, return the numerical value of digit @var{char} in
  2455. @var{radix}.
  2456. @end defun
  2457. @node Numerical Functions
  2458. @section Numerical Functions
  2459. @noindent
  2460. These functions perform various arithmetic operations on numbers.
  2461. @defun cl-gcd &rest integers
  2462. This function returns the Greatest Common Divisor of the arguments.
  2463. For one argument, it returns the absolute value of that argument.
  2464. For zero arguments, it returns zero.
  2465. @end defun
  2466. @defun cl-lcm &rest integers
  2467. This function returns the Least Common Multiple of the arguments.
  2468. For one argument, it returns the absolute value of that argument.
  2469. For zero arguments, it returns one.
  2470. @end defun
  2471. @defun cl-isqrt integer
  2472. This function computes the ``integer square root'' of its integer
  2473. argument, i.e., the greatest integer less than or equal to the true
  2474. square root of the argument.
  2475. @end defun
  2476. @defun cl-floor number &optional divisor
  2477. With one argument, @code{cl-floor} returns a list of two numbers:
  2478. The argument rounded down (toward minus infinity) to an integer,
  2479. and the ``remainder'' which would have to be added back to the
  2480. first return value to yield the argument again. If the argument
  2481. is an integer @var{x}, the result is always the list @code{(@var{x} 0)}.
  2482. If the argument is a floating-point number, the first
  2483. result is a Lisp integer and the second is a Lisp float between
  2484. 0 (inclusive) and 1 (exclusive).
  2485. With two arguments, @code{cl-floor} divides @var{number} by
  2486. @var{divisor}, and returns the floor of the quotient and the
  2487. corresponding remainder as a list of two numbers. If
  2488. @code{(cl-floor @var{x} @var{y})} returns @code{(@var{q} @var{r})},
  2489. then @code{@var{q}*@var{y} + @var{r} = @var{x}}, with @var{r}
  2490. between 0 (inclusive) and @var{r} (exclusive). Also, note
  2491. that @code{(cl-floor @var{x})} is exactly equivalent to
  2492. @code{(cl-floor @var{x} 1)}.
  2493. This function is entirely compatible with Common Lisp's @code{floor}
  2494. function, except that it returns the two results in a list since
  2495. Emacs Lisp does not support multiple-valued functions.
  2496. @end defun
  2497. @defun cl-ceiling number &optional divisor
  2498. This function implements the Common Lisp @code{ceiling} function,
  2499. which is analogous to @code{floor} except that it rounds the
  2500. argument or quotient of the arguments up toward plus infinity.
  2501. The remainder will be between 0 and minus @var{r}.
  2502. @end defun
  2503. @defun cl-truncate number &optional divisor
  2504. This function implements the Common Lisp @code{truncate} function,
  2505. which is analogous to @code{floor} except that it rounds the
  2506. argument or quotient of the arguments toward zero. Thus it is
  2507. equivalent to @code{cl-floor} if the argument or quotient is
  2508. positive, or to @code{cl-ceiling} otherwise. The remainder has
  2509. the same sign as @var{number}.
  2510. @end defun
  2511. @defun cl-round number &optional divisor
  2512. This function implements the Common Lisp @code{round} function,
  2513. which is analogous to @code{floor} except that it rounds the
  2514. argument or quotient of the arguments to the nearest integer.
  2515. In the case of a tie (the argument or quotient is exactly
  2516. halfway between two integers), it rounds to the even integer.
  2517. @end defun
  2518. @defun cl-mod number divisor
  2519. This function returns the same value as the second return value
  2520. of @code{cl-floor}.
  2521. @end defun
  2522. @defun cl-rem number divisor
  2523. This function returns the same value as the second return value
  2524. of @code{cl-truncate}.
  2525. @end defun
  2526. @defun cl-parse-integer string &key start end radix junk-allowed
  2527. This function implements the Common Lisp @code{parse-integer}
  2528. function. It parses an integer in the specified @var{radix} from the
  2529. substring of @var{string} between @var{start} and @var{end}. Any
  2530. leading and trailing whitespace chars are ignored. The function
  2531. signals an error if the substring between @var{start} and @var{end}
  2532. cannot be parsed as an integer, unless @var{junk-allowed} is
  2533. non-@code{nil}.
  2534. @end defun
  2535. @node Random Numbers
  2536. @section Random Numbers
  2537. @noindent
  2538. This package also provides an implementation of the Common Lisp
  2539. random number generator. It uses its own additive-congruential
  2540. algorithm, which is much more likely to give statistically clean
  2541. @c FIXME? Still true?
  2542. random numbers than the simple generators supplied by many
  2543. operating systems.
  2544. @defun cl-random number &optional state
  2545. This function returns a random nonnegative number less than
  2546. @var{number}, and of the same type (either integer or floating-point).
  2547. The @var{state} argument should be a @code{random-state} object
  2548. that holds the state of the random number generator. The
  2549. function modifies this state object as a side effect. If
  2550. @var{state} is omitted, it defaults to the internal variable
  2551. @code{cl--random-state}, which contains a pre-initialized
  2552. default @code{random-state} object. (Since any number of programs in
  2553. the Emacs process may be accessing @code{cl--random-state} in
  2554. interleaved fashion, the sequence generated from this will be
  2555. irreproducible for all intents and purposes.)
  2556. @end defun
  2557. @defun cl-make-random-state &optional state
  2558. This function creates or copies a @code{random-state} object.
  2559. If @var{state} is omitted or @code{nil}, it returns a new copy of
  2560. @code{cl--random-state}. This is a copy in the sense that future
  2561. sequences of calls to @code{(cl-random @var{n})} and
  2562. @code{(cl-random @var{n} @var{s})} (where @var{s} is the new
  2563. random-state object) will return identical sequences of random
  2564. numbers.
  2565. If @var{state} is a @code{random-state} object, this function
  2566. returns a copy of that object. If @var{state} is @code{t}, this
  2567. function returns a new @code{random-state} object seeded from the
  2568. date and time. As an extension to Common Lisp, @var{state} may also
  2569. be an integer in which case the new object is seeded from that
  2570. integer; each different integer seed will result in a completely
  2571. different sequence of random numbers.
  2572. It is valid to print a @code{random-state} object to a buffer or
  2573. file and later read it back with @code{read}. If a program wishes
  2574. to use a sequence of pseudo-random numbers which can be reproduced
  2575. later for debugging, it can call @code{(cl-make-random-state t)} to
  2576. get a new sequence, then print this sequence to a file. When the
  2577. program is later rerun, it can read the original run's random-state
  2578. from the file.
  2579. @end defun
  2580. @defun cl-random-state-p object
  2581. This predicate returns @code{t} if @var{object} is a
  2582. @code{random-state} object, or @code{nil} otherwise.
  2583. @end defun
  2584. @node Implementation Parameters
  2585. @section Implementation Parameters
  2586. @noindent
  2587. This package defines several useful constants having to do with
  2588. floating-point numbers.
  2589. It determines their values by exercising the computer's
  2590. floating-point arithmetic in various ways. Because this operation
  2591. might be slow, the code for initializing them is kept in a separate
  2592. function that must be called before the parameters can be used.
  2593. @defun cl-float-limits
  2594. This function makes sure that the Common Lisp floating-point parameters
  2595. like @code{cl-most-positive-float} have been initialized. Until it is
  2596. called, these parameters will be @code{nil}.
  2597. @c If this version of Emacs does not support floats, the parameters will
  2598. @c remain @code{nil}.
  2599. If the parameters have already been initialized, the function returns
  2600. immediately.
  2601. The algorithm makes assumptions that will be valid for almost all
  2602. machines, but will fail if the machine's arithmetic is extremely
  2603. unusual, e.g., decimal.
  2604. @end defun
  2605. Since true Common Lisp supports up to four different floating-point
  2606. precisions, it has families of constants like
  2607. @code{most-positive-single-float}, @code{most-positive-double-float},
  2608. @code{most-positive-long-float}, and so on. Emacs has only one
  2609. floating-point precision, so this package omits the precision word
  2610. from the constants' names.
  2611. @defvar cl-most-positive-float
  2612. This constant equals the largest value a Lisp float can hold.
  2613. For those systems whose arithmetic supports infinities, this is
  2614. the largest @emph{finite} value. For IEEE machines, the value
  2615. is approximately @code{1.79e+308}.
  2616. @end defvar
  2617. @defvar cl-most-negative-float
  2618. This constant equals the most negative value a Lisp float can hold.
  2619. (It is assumed to be equal to @code{(- cl-most-positive-float)}.)
  2620. @end defvar
  2621. @defvar cl-least-positive-float
  2622. This constant equals the smallest Lisp float value greater than zero.
  2623. For IEEE machines, it is about @code{4.94e-324} if denormals are
  2624. supported or @code{2.22e-308} if not.
  2625. @end defvar
  2626. @defvar cl-least-positive-normalized-float
  2627. This constant equals the smallest @emph{normalized} Lisp float greater
  2628. than zero, i.e., the smallest value for which IEEE denormalization
  2629. will not result in a loss of precision. For IEEE machines, this
  2630. value is about @code{2.22e-308}. For machines that do not support
  2631. the concept of denormalization and gradual underflow, this constant
  2632. will always equal @code{cl-least-positive-float}.
  2633. @end defvar
  2634. @defvar cl-least-negative-float
  2635. This constant is the negative counterpart of @code{cl-least-positive-float}.
  2636. @end defvar
  2637. @defvar cl-least-negative-normalized-float
  2638. This constant is the negative counterpart of
  2639. @code{cl-least-positive-normalized-float}.
  2640. @end defvar
  2641. @defvar cl-float-epsilon
  2642. This constant is the smallest positive Lisp float that can be added
  2643. to 1.0 to produce a distinct value. Adding a smaller number to 1.0
  2644. will yield 1.0 again due to roundoff. For IEEE machines, epsilon
  2645. is about @code{2.22e-16}.
  2646. @end defvar
  2647. @defvar cl-float-negative-epsilon
  2648. This is the smallest positive value that can be subtracted from
  2649. 1.0 to produce a distinct value. For IEEE machines, it is about
  2650. @code{1.11e-16}.
  2651. @end defvar
  2652. @node Sequences
  2653. @chapter Sequences
  2654. @noindent
  2655. Common Lisp defines a number of functions that operate on
  2656. @dfn{sequences}, which are either lists, strings, or vectors.
  2657. Emacs Lisp includes a few of these, notably @code{elt} and
  2658. @code{length}; this package defines most of the rest.
  2659. @menu
  2660. * Sequence Basics:: Arguments shared by all sequence functions.
  2661. * Mapping over Sequences:: @code{cl-mapcar}, @code{cl-map}, @code{cl-maplist}, etc.
  2662. * Sequence Functions:: @code{cl-subseq}, @code{cl-remove}, @code{cl-substitute}, etc.
  2663. * Searching Sequences:: @code{cl-find}, @code{cl-count}, @code{cl-search}, etc.
  2664. * Sorting Sequences:: @code{cl-sort}, @code{cl-stable-sort}, @code{cl-merge}.
  2665. @end menu
  2666. @node Sequence Basics
  2667. @section Sequence Basics
  2668. @noindent
  2669. Many of the sequence functions take keyword arguments; @pxref{Argument
  2670. Lists}. All keyword arguments are optional and, if specified,
  2671. may appear in any order.
  2672. The @code{:key} argument should be passed either @code{nil}, or a
  2673. function of one argument. This key function is used as a filter
  2674. through which the elements of the sequence are seen; for example,
  2675. @code{(cl-find x y :key 'car)} is similar to @code{(cl-assoc x y)}.
  2676. It searches for an element of the list whose @sc{car} equals
  2677. @code{x}, rather than for an element which equals @code{x} itself.
  2678. If @code{:key} is omitted or @code{nil}, the filter is effectively
  2679. the identity function.
  2680. The @code{:test} and @code{:test-not} arguments should be either
  2681. @code{nil}, or functions of two arguments. The test function is
  2682. used to compare two sequence elements, or to compare a search value
  2683. with sequence elements. (The two values are passed to the test
  2684. function in the same order as the original sequence function
  2685. arguments from which they are derived, or, if they both come from
  2686. the same sequence, in the same order as they appear in that sequence.)
  2687. The @code{:test} argument specifies a function which must return
  2688. true (non-@code{nil}) to indicate a match; instead, you may use
  2689. @code{:test-not} to give a function which returns @emph{false} to
  2690. indicate a match. The default test function is @code{eql}.
  2691. Many functions that take @var{item} and @code{:test} or @code{:test-not}
  2692. arguments also come in @code{-if} and @code{-if-not} varieties,
  2693. where a @var{predicate} function is passed instead of @var{item},
  2694. and sequence elements match if the predicate returns true on them
  2695. (or false in the case of @code{-if-not}). For example:
  2696. @example
  2697. (cl-remove 0 seq :test '=) @equiv{} (cl-remove-if 'zerop seq)
  2698. @end example
  2699. @noindent
  2700. to remove all zeros from sequence @code{seq}.
  2701. Some operations can work on a subsequence of the argument sequence;
  2702. these function take @code{:start} and @code{:end} arguments, which
  2703. default to zero and the length of the sequence, respectively.
  2704. Only elements between @var{start} (inclusive) and @var{end}
  2705. (exclusive) are affected by the operation. The @var{end} argument
  2706. may be passed @code{nil} to signify the length of the sequence;
  2707. otherwise, both @var{start} and @var{end} must be integers, with
  2708. @code{0 <= @var{start} <= @var{end} <= (length @var{seq})}.
  2709. If the function takes two sequence arguments, the limits are
  2710. defined by keywords @code{:start1} and @code{:end1} for the first,
  2711. and @code{:start2} and @code{:end2} for the second.
  2712. A few functions accept a @code{:from-end} argument, which, if
  2713. non-@code{nil}, causes the operation to go from right-to-left
  2714. through the sequence instead of left-to-right, and a @code{:count}
  2715. argument, which specifies an integer maximum number of elements
  2716. to be removed or otherwise processed.
  2717. The sequence functions make no guarantees about the order in
  2718. which the @code{:test}, @code{:test-not}, and @code{:key} functions
  2719. are called on various elements. Therefore, it is a bad idea to depend
  2720. on side effects of these functions. For example, @code{:from-end}
  2721. may cause the sequence to be scanned actually in reverse, or it may
  2722. be scanned forwards but computing a result ``as if'' it were scanned
  2723. backwards. (Some functions, like @code{cl-mapcar} and @code{cl-every},
  2724. @emph{do} specify exactly the order in which the function is called
  2725. so side effects are perfectly acceptable in those cases.)
  2726. Strings may contain ``text properties'' as well
  2727. as character data. Except as noted, it is undefined whether or
  2728. not text properties are preserved by sequence functions. For
  2729. example, @code{(cl-remove ?A @var{str})} may or may not preserve
  2730. the properties of the characters copied from @var{str} into the
  2731. result.
  2732. @node Mapping over Sequences
  2733. @section Mapping over Sequences
  2734. @noindent
  2735. These functions ``map'' the function you specify over the elements
  2736. of lists or arrays. They are all variations on the theme of the
  2737. built-in function @code{mapcar}.
  2738. @defun cl-mapcar function seq &rest more-seqs
  2739. This function calls @var{function} on successive parallel sets of
  2740. elements from its argument sequences. Given a single @var{seq}
  2741. argument it is equivalent to @code{mapcar}; given @var{n} sequences,
  2742. it calls the function with the first elements of each of the sequences
  2743. as the @var{n} arguments to yield the first element of the result
  2744. list, then with the second elements, and so on. The mapping stops as
  2745. soon as the shortest sequence runs out. The argument sequences may
  2746. be any mixture of lists, strings, and vectors; the return sequence
  2747. is always a list.
  2748. Common Lisp's @code{mapcar} accepts multiple arguments but works
  2749. only on lists; Emacs Lisp's @code{mapcar} accepts a single sequence
  2750. argument. This package's @code{cl-mapcar} works as a compatible
  2751. superset of both.
  2752. @end defun
  2753. @defun cl-map result-type function seq &rest more-seqs
  2754. This function maps @var{function} over the argument sequences,
  2755. just like @code{cl-mapcar}, but it returns a sequence of type
  2756. @var{result-type} rather than a list. @var{result-type} must
  2757. be one of the following symbols: @code{vector}, @code{string},
  2758. @code{list} (in which case the effect is the same as for
  2759. @code{cl-mapcar}), or @code{nil} (in which case the results are
  2760. thrown away and @code{cl-map} returns @code{nil}).
  2761. @end defun
  2762. @defun cl-maplist function list &rest more-lists
  2763. This function calls @var{function} on each of its argument lists,
  2764. then on the @sc{cdr}s of those lists, and so on, until the
  2765. shortest list runs out. The results are returned in the form
  2766. of a list. Thus, @code{cl-maplist} is like @code{cl-mapcar} except
  2767. that it passes in the list pointers themselves rather than the
  2768. @sc{car}s of the advancing pointers.
  2769. @end defun
  2770. @defun cl-mapc function seq &rest more-seqs
  2771. This function is like @code{cl-mapcar}, except that the values returned
  2772. by @var{function} are ignored and thrown away rather than being
  2773. collected into a list. The return value of @code{cl-mapc} is @var{seq},
  2774. the first sequence. This function is more general than the Emacs
  2775. primitive @code{mapc}. (Note that this function is called
  2776. @code{cl-mapc} even in @file{cl.el}, rather than @code{mapc*} as you
  2777. might expect.)
  2778. @c http://debbugs.gnu.org/6575
  2779. @end defun
  2780. @defun cl-mapl function list &rest more-lists
  2781. This function is like @code{cl-maplist}, except that it throws away
  2782. the values returned by @var{function}.
  2783. @end defun
  2784. @defun cl-mapcan function seq &rest more-seqs
  2785. This function is like @code{cl-mapcar}, except that it concatenates
  2786. the return values (which must be lists) using @code{nconc},
  2787. rather than simply collecting them into a list.
  2788. @end defun
  2789. @defun cl-mapcon function list &rest more-lists
  2790. This function is like @code{cl-maplist}, except that it concatenates
  2791. the return values using @code{nconc}.
  2792. @end defun
  2793. @defun cl-some predicate seq &rest more-seqs
  2794. This function calls @var{predicate} on each element of @var{seq}
  2795. in turn; if @var{predicate} returns a non-@code{nil} value,
  2796. @code{cl-some} returns that value, otherwise it returns @code{nil}.
  2797. Given several sequence arguments, it steps through the sequences
  2798. in parallel until the shortest one runs out, just as in
  2799. @code{cl-mapcar}. You can rely on the left-to-right order in which
  2800. the elements are visited, and on the fact that mapping stops
  2801. immediately as soon as @var{predicate} returns non-@code{nil}.
  2802. @end defun
  2803. @defun cl-every predicate seq &rest more-seqs
  2804. This function calls @var{predicate} on each element of the sequence(s)
  2805. in turn; it returns @code{nil} as soon as @var{predicate} returns
  2806. @code{nil} for any element, or @code{t} if the predicate was true
  2807. for all elements.
  2808. @end defun
  2809. @defun cl-notany predicate seq &rest more-seqs
  2810. This function calls @var{predicate} on each element of the sequence(s)
  2811. in turn; it returns @code{nil} as soon as @var{predicate} returns
  2812. a non-@code{nil} value for any element, or @code{t} if the predicate
  2813. was @code{nil} for all elements.
  2814. @end defun
  2815. @defun cl-notevery predicate seq &rest more-seqs
  2816. This function calls @var{predicate} on each element of the sequence(s)
  2817. in turn; it returns a non-@code{nil} value as soon as @var{predicate}
  2818. returns @code{nil} for any element, or @code{nil} if the predicate was
  2819. true for all elements.
  2820. @end defun
  2821. @defun cl-reduce function seq @t{&key :from-end :start :end :initial-value :key}
  2822. This function combines the elements of @var{seq} using an associative
  2823. binary operation. Suppose @var{function} is @code{*} and @var{seq} is
  2824. the list @code{(2 3 4 5)}. The first two elements of the list are
  2825. combined with @code{(* 2 3) = 6}; this is combined with the next
  2826. element, @code{(* 6 4) = 24}, and that is combined with the final
  2827. element: @code{(* 24 5) = 120}. Note that the @code{*} function happens
  2828. to be self-reducing, so that @code{(* 2 3 4 5)} has the same effect as
  2829. an explicit call to @code{cl-reduce}.
  2830. If @code{:from-end} is true, the reduction is right-associative instead
  2831. of left-associative:
  2832. @example
  2833. (cl-reduce '- '(1 2 3 4))
  2834. @equiv{} (- (- (- 1 2) 3) 4) @result{} -8
  2835. (cl-reduce '- '(1 2 3 4) :from-end t)
  2836. @equiv{} (- 1 (- 2 (- 3 4))) @result{} -2
  2837. @end example
  2838. If @code{:key} is specified, it is a function of one argument, which
  2839. is called on each of the sequence elements in turn.
  2840. If @code{:initial-value} is specified, it is effectively added to the
  2841. front (or rear in the case of @code{:from-end}) of the sequence.
  2842. The @code{:key} function is @emph{not} applied to the initial value.
  2843. If the sequence, including the initial value, has exactly one element
  2844. then that element is returned without ever calling @var{function}.
  2845. If the sequence is empty (and there is no initial value), then
  2846. @var{function} is called with no arguments to obtain the return value.
  2847. @end defun
  2848. All of these mapping operations can be expressed conveniently in
  2849. terms of the @code{cl-loop} macro. In compiled code, @code{cl-loop} will
  2850. be faster since it generates the loop as in-line code with no
  2851. function calls.
  2852. @node Sequence Functions
  2853. @section Sequence Functions
  2854. @noindent
  2855. This section describes a number of Common Lisp functions for
  2856. operating on sequences.
  2857. @defun cl-subseq sequence start &optional end
  2858. This function returns a given subsequence of the argument
  2859. @var{sequence}, which may be a list, string, or vector.
  2860. The indices @var{start} and @var{end} must be in range, and
  2861. @var{start} must be no greater than @var{end}. If @var{end}
  2862. is omitted, it defaults to the length of the sequence. The
  2863. return value is always a copy; it does not share structure
  2864. with @var{sequence}.
  2865. As an extension to Common Lisp, @var{start} and/or @var{end}
  2866. may be negative, in which case they represent a distance back
  2867. from the end of the sequence. This is for compatibility with
  2868. Emacs's @code{substring} function. Note that @code{cl-subseq} is
  2869. the @emph{only} sequence function that allows negative
  2870. @var{start} and @var{end}.
  2871. You can use @code{setf} on a @code{cl-subseq} form to replace a
  2872. specified range of elements with elements from another sequence.
  2873. The replacement is done as if by @code{cl-replace}, described below.
  2874. @end defun
  2875. @defun cl-concatenate result-type &rest seqs
  2876. This function concatenates the argument sequences together to
  2877. form a result sequence of type @var{result-type}, one of the
  2878. symbols @code{vector}, @code{string}, or @code{list}. The
  2879. arguments are always copied, even in cases such as
  2880. @code{(cl-concatenate 'list '(1 2 3))} where the result is
  2881. identical to an argument.
  2882. @end defun
  2883. @defun cl-fill seq item @t{&key :start :end}
  2884. This function fills the elements of the sequence (or the specified
  2885. part of the sequence) with the value @var{item}.
  2886. @end defun
  2887. @defun cl-replace seq1 seq2 @t{&key :start1 :end1 :start2 :end2}
  2888. This function copies part of @var{seq2} into part of @var{seq1}.
  2889. The sequence @var{seq1} is not stretched or resized; the amount
  2890. of data copied is simply the shorter of the source and destination
  2891. (sub)sequences. The function returns @var{seq1}.
  2892. If @var{seq1} and @var{seq2} are @code{eq}, then the replacement
  2893. will work correctly even if the regions indicated by the start
  2894. and end arguments overlap. However, if @var{seq1} and @var{seq2}
  2895. are lists that share storage but are not @code{eq}, and the
  2896. start and end arguments specify overlapping regions, the effect
  2897. is undefined.
  2898. @end defun
  2899. @defun cl-remove item seq @t{&key :test :test-not :key :count :start :end :from-end}
  2900. This returns a copy of @var{seq} with all elements matching
  2901. @var{item} removed. The result may share storage with or be
  2902. @code{eq} to @var{seq} in some circumstances, but the original
  2903. @var{seq} will not be modified. The @code{:test}, @code{:test-not},
  2904. and @code{:key} arguments define the matching test that is used;
  2905. by default, elements @code{eql} to @var{item} are removed. The
  2906. @code{:count} argument specifies the maximum number of matching
  2907. elements that can be removed (only the leftmost @var{count} matches
  2908. are removed). The @code{:start} and @code{:end} arguments specify
  2909. a region in @var{seq} in which elements will be removed; elements
  2910. outside that region are not matched or removed. The @code{:from-end}
  2911. argument, if true, says that elements should be deleted from the
  2912. end of the sequence rather than the beginning (this matters only
  2913. if @var{count} was also specified).
  2914. @end defun
  2915. @defun cl-delete item seq @t{&key :test :test-not :key :count :start :end :from-end}
  2916. This deletes all elements of @var{seq} that match @var{item}.
  2917. It is a destructive operation. Since Emacs Lisp does not support
  2918. stretchable strings or vectors, this is the same as @code{cl-remove}
  2919. for those sequence types. On lists, @code{cl-remove} will copy the
  2920. list if necessary to preserve the original list, whereas
  2921. @code{cl-delete} will splice out parts of the argument list.
  2922. Compare @code{append} and @code{nconc}, which are analogous
  2923. non-destructive and destructive list operations in Emacs Lisp.
  2924. @end defun
  2925. @findex cl-remove-if
  2926. @findex cl-remove-if-not
  2927. @findex cl-delete-if
  2928. @findex cl-delete-if-not
  2929. The predicate-oriented functions @code{cl-remove-if}, @code{cl-remove-if-not},
  2930. @code{cl-delete-if}, and @code{cl-delete-if-not} are defined similarly.
  2931. @defun cl-remove-duplicates seq @t{&key :test :test-not :key :start :end :from-end}
  2932. This function returns a copy of @var{seq} with duplicate elements
  2933. removed. Specifically, if two elements from the sequence match
  2934. according to the @code{:test}, @code{:test-not}, and @code{:key}
  2935. arguments, only the rightmost one is retained. If @code{:from-end}
  2936. is true, the leftmost one is retained instead. If @code{:start} or
  2937. @code{:end} is specified, only elements within that subsequence are
  2938. examined or removed.
  2939. @end defun
  2940. @defun cl-delete-duplicates seq @t{&key :test :test-not :key :start :end :from-end}
  2941. This function deletes duplicate elements from @var{seq}. It is
  2942. a destructive version of @code{cl-remove-duplicates}.
  2943. @end defun
  2944. @defun cl-substitute new old seq @t{&key :test :test-not :key :count :start :end :from-end}
  2945. This function returns a copy of @var{seq}, with all elements
  2946. matching @var{old} replaced with @var{new}. The @code{:count},
  2947. @code{:start}, @code{:end}, and @code{:from-end} arguments may be
  2948. used to limit the number of substitutions made.
  2949. @end defun
  2950. @defun cl-nsubstitute new old seq @t{&key :test :test-not :key :count :start :end :from-end}
  2951. This is a destructive version of @code{cl-substitute}; it performs
  2952. the substitution using @code{setcar} or @code{aset} rather than
  2953. by returning a changed copy of the sequence.
  2954. @end defun
  2955. @findex cl-substitute-if
  2956. @findex cl-substitute-if-not
  2957. @findex cl-nsubstitute-if
  2958. @findex cl-nsubstitute-if-not
  2959. The functions @code{cl-substitute-if}, @code{cl-substitute-if-not},
  2960. @code{cl-nsubstitute-if}, and @code{cl-nsubstitute-if-not} are defined
  2961. similarly. For these, a @var{predicate} is given in place of the
  2962. @var{old} argument.
  2963. @node Searching Sequences
  2964. @section Searching Sequences
  2965. @noindent
  2966. These functions search for elements or subsequences in a sequence.
  2967. (See also @code{cl-member} and @code{cl-assoc}; @pxref{Lists}.)
  2968. @defun cl-find item seq @t{&key :test :test-not :key :start :end :from-end}
  2969. This function searches @var{seq} for an element matching @var{item}.
  2970. If it finds a match, it returns the matching element. Otherwise,
  2971. it returns @code{nil}. It returns the leftmost match, unless
  2972. @code{:from-end} is true, in which case it returns the rightmost
  2973. match. The @code{:start} and @code{:end} arguments may be used to
  2974. limit the range of elements that are searched.
  2975. @end defun
  2976. @defun cl-position item seq @t{&key :test :test-not :key :start :end :from-end}
  2977. This function is like @code{cl-find}, except that it returns the
  2978. integer position in the sequence of the matching item rather than
  2979. the item itself. The position is relative to the start of the
  2980. sequence as a whole, even if @code{:start} is non-zero. The function
  2981. returns @code{nil} if no matching element was found.
  2982. @end defun
  2983. @defun cl-count item seq @t{&key :test :test-not :key :start :end}
  2984. This function returns the number of elements of @var{seq} which
  2985. match @var{item}. The result is always a nonnegative integer.
  2986. @end defun
  2987. @findex cl-find-if
  2988. @findex cl-find-if-not
  2989. @findex cl-position-if
  2990. @findex cl-position-if-not
  2991. @findex cl-count-if
  2992. @findex cl-count-if-not
  2993. The @code{cl-find-if}, @code{cl-find-if-not}, @code{cl-position-if},
  2994. @code{cl-position-if-not}, @code{cl-count-if}, and @code{cl-count-if-not}
  2995. functions are defined similarly.
  2996. @defun cl-mismatch seq1 seq2 @t{&key :test :test-not :key :start1 :end1 :start2 :end2 :from-end}
  2997. This function compares the specified parts of @var{seq1} and
  2998. @var{seq2}. If they are the same length and the corresponding
  2999. elements match (according to @code{:test}, @code{:test-not},
  3000. and @code{:key}), the function returns @code{nil}. If there is
  3001. a mismatch, the function returns the index (relative to @var{seq1})
  3002. of the first mismatching element. This will be the leftmost pair of
  3003. elements that do not match, or the position at which the shorter of
  3004. the two otherwise-matching sequences runs out.
  3005. If @code{:from-end} is true, then the elements are compared from right
  3006. to left starting at @code{(1- @var{end1})} and @code{(1- @var{end2})}.
  3007. If the sequences differ, then one plus the index of the rightmost
  3008. difference (relative to @var{seq1}) is returned.
  3009. An interesting example is @code{(cl-mismatch str1 str2 :key 'upcase)},
  3010. which compares two strings case-insensitively.
  3011. @end defun
  3012. @defun cl-search seq1 seq2 @t{&key :test :test-not :key :from-end :start1 :end1 :start2 :end2}
  3013. This function searches @var{seq2} for a subsequence that matches
  3014. @var{seq1} (or part of it specified by @code{:start1} and
  3015. @code{:end1}). Only matches that fall entirely within the region
  3016. defined by @code{:start2} and @code{:end2} will be considered.
  3017. The return value is the index of the leftmost element of the
  3018. leftmost match, relative to the start of @var{seq2}, or @code{nil}
  3019. if no matches were found. If @code{:from-end} is true, the
  3020. function finds the @emph{rightmost} matching subsequence.
  3021. @end defun
  3022. @node Sorting Sequences
  3023. @section Sorting Sequences
  3024. @defun cl-sort seq predicate @t{&key :key}
  3025. This function sorts @var{seq} into increasing order as determined
  3026. by using @var{predicate} to compare pairs of elements. @var{predicate}
  3027. should return true (non-@code{nil}) if and only if its first argument
  3028. is less than (not equal to) its second argument. For example,
  3029. @code{<} and @code{string-lessp} are suitable predicate functions
  3030. for sorting numbers and strings, respectively; @code{>} would sort
  3031. numbers into decreasing rather than increasing order.
  3032. This function differs from Emacs's built-in @code{sort} in that it
  3033. can operate on any type of sequence, not just lists. Also, it
  3034. accepts a @code{:key} argument, which is used to preprocess data
  3035. fed to the @var{predicate} function. For example,
  3036. @example
  3037. (setq data (cl-sort data 'string-lessp :key 'downcase))
  3038. @end example
  3039. @noindent
  3040. sorts @var{data}, a sequence of strings, into increasing alphabetical
  3041. order without regard to case. A @code{:key} function of @code{car}
  3042. would be useful for sorting association lists. It should only be a
  3043. simple accessor though, since it's used heavily in the current
  3044. implementation.
  3045. The @code{cl-sort} function is destructive; it sorts lists by actually
  3046. rearranging the @sc{cdr} pointers in suitable fashion.
  3047. @end defun
  3048. @defun cl-stable-sort seq predicate @t{&key :key}
  3049. This function sorts @var{seq} @dfn{stably}, meaning two elements
  3050. which are equal in terms of @var{predicate} are guaranteed not to
  3051. be rearranged out of their original order by the sort.
  3052. In practice, @code{cl-sort} and @code{cl-stable-sort} are equivalent
  3053. in Emacs Lisp because the underlying @code{sort} function is
  3054. stable by default. However, this package reserves the right to
  3055. use non-stable methods for @code{cl-sort} in the future.
  3056. @end defun
  3057. @defun cl-merge type seq1 seq2 predicate @t{&key :key}
  3058. This function merges two sequences @var{seq1} and @var{seq2} by
  3059. interleaving their elements. The result sequence, of type @var{type}
  3060. (in the sense of @code{cl-concatenate}), has length equal to the sum
  3061. of the lengths of the two input sequences. The sequences may be
  3062. modified destructively. Order of elements within @var{seq1} and
  3063. @var{seq2} is preserved in the interleaving; elements of the two
  3064. sequences are compared by @var{predicate} (in the sense of
  3065. @code{sort}) and the lesser element goes first in the result.
  3066. When elements are equal, those from @var{seq1} precede those from
  3067. @var{seq2} in the result. Thus, if @var{seq1} and @var{seq2} are
  3068. both sorted according to @var{predicate}, then the result will be
  3069. a merged sequence which is (stably) sorted according to
  3070. @var{predicate}.
  3071. @end defun
  3072. @node Lists
  3073. @chapter Lists
  3074. @noindent
  3075. The functions described here operate on lists.
  3076. @menu
  3077. * List Functions:: @code{cl-caddr}, @code{cl-first}, @code{cl-list*}, etc.
  3078. * Substitution of Expressions:: @code{cl-subst}, @code{cl-sublis}, etc.
  3079. * Lists as Sets:: @code{cl-member}, @code{cl-adjoin}, @code{cl-union}, etc.
  3080. * Association Lists:: @code{cl-assoc}, @code{cl-acons}, @code{cl-pairlis}, etc.
  3081. @end menu
  3082. @node List Functions
  3083. @section List Functions
  3084. @noindent
  3085. This section describes a number of simple operations on lists,
  3086. i.e., chains of cons cells.
  3087. @defun cl-caddr x
  3088. This function is equivalent to @code{(car (cdr (cdr @var{x})))}.
  3089. Likewise, this package aliases all 24 @code{c@var{xxx}r} functions
  3090. where @var{xxx} is up to four @samp{a}s and/or @samp{d}s.
  3091. All of these functions are @code{setf}-able, and calls to them
  3092. are expanded inline by the byte-compiler for maximum efficiency.
  3093. @end defun
  3094. @defun cl-first x
  3095. This function is a synonym for @code{(car @var{x})}. Likewise,
  3096. the functions @code{cl-second}, @code{cl-third}, @dots{}, through
  3097. @code{cl-tenth} return the given element of the list @var{x}.
  3098. @end defun
  3099. @defun cl-rest x
  3100. This function is a synonym for @code{(cdr @var{x})}.
  3101. @end defun
  3102. @defun cl-endp x
  3103. This function acts like @code{null}, but signals an error if @code{x}
  3104. is neither a @code{nil} nor a cons cell.
  3105. @end defun
  3106. @defun cl-list-length x
  3107. This function returns the length of list @var{x}, exactly like
  3108. @code{(length @var{x})}, except that if @var{x} is a circular
  3109. list (where the @sc{cdr}-chain forms a loop rather than terminating
  3110. with @code{nil}), this function returns @code{nil}. (The regular
  3111. @code{length} function would get stuck if given a circular list.
  3112. See also the @code{safe-length} function.)
  3113. @end defun
  3114. @defun cl-list* arg &rest others
  3115. This function constructs a list of its arguments. The final
  3116. argument becomes the @sc{cdr} of the last cell constructed.
  3117. Thus, @code{(cl-list* @var{a} @var{b} @var{c})} is equivalent to
  3118. @code{(cons @var{a} (cons @var{b} @var{c}))}, and
  3119. @code{(cl-list* @var{a} @var{b} nil)} is equivalent to
  3120. @code{(list @var{a} @var{b})}.
  3121. @end defun
  3122. @defun cl-ldiff list sublist
  3123. If @var{sublist} is a sublist of @var{list}, i.e., is @code{eq} to
  3124. one of the cons cells of @var{list}, then this function returns
  3125. a copy of the part of @var{list} up to but not including
  3126. @var{sublist}. For example, @code{(cl-ldiff x (cddr x))} returns
  3127. the first two elements of the list @code{x}. The result is a
  3128. copy; the original @var{list} is not modified. If @var{sublist}
  3129. is not a sublist of @var{list}, a copy of the entire @var{list}
  3130. is returned.
  3131. @end defun
  3132. @defun cl-copy-list list
  3133. This function returns a copy of the list @var{list}. It copies
  3134. dotted lists like @code{(1 2 . 3)} correctly.
  3135. @end defun
  3136. @defun cl-tree-equal x y @t{&key :test :test-not :key}
  3137. This function compares two trees of cons cells. If @var{x} and
  3138. @var{y} are both cons cells, their @sc{car}s and @sc{cdr}s are
  3139. compared recursively. If neither @var{x} nor @var{y} is a cons
  3140. cell, they are compared by @code{eql}, or according to the
  3141. specified test. The @code{:key} function, if specified, is
  3142. applied to the elements of both trees. @xref{Sequences}.
  3143. @end defun
  3144. @node Substitution of Expressions
  3145. @section Substitution of Expressions
  3146. @noindent
  3147. These functions substitute elements throughout a tree of cons
  3148. cells. (@xref{Sequence Functions}, for the @code{cl-substitute}
  3149. function, which works on just the top-level elements of a list.)
  3150. @defun cl-subst new old tree @t{&key :test :test-not :key}
  3151. This function substitutes occurrences of @var{old} with @var{new}
  3152. in @var{tree}, a tree of cons cells. It returns a substituted
  3153. tree, which will be a copy except that it may share storage with
  3154. the argument @var{tree} in parts where no substitutions occurred.
  3155. The original @var{tree} is not modified. This function recurses
  3156. on, and compares against @var{old}, both @sc{car}s and @sc{cdr}s
  3157. of the component cons cells. If @var{old} is itself a cons cell,
  3158. then matching cells in the tree are substituted as usual without
  3159. recursively substituting in that cell. Comparisons with @var{old}
  3160. are done according to the specified test (@code{eql} by default).
  3161. The @code{:key} function is applied to the elements of the tree
  3162. but not to @var{old}.
  3163. @end defun
  3164. @defun cl-nsubst new old tree @t{&key :test :test-not :key}
  3165. This function is like @code{cl-subst}, except that it works by
  3166. destructive modification (by @code{setcar} or @code{setcdr})
  3167. rather than copying.
  3168. @end defun
  3169. @findex cl-subst-if
  3170. @findex cl-subst-if-not
  3171. @findex cl-nsubst-if
  3172. @findex cl-nsubst-if-not
  3173. The @code{cl-subst-if}, @code{cl-subst-if-not}, @code{cl-nsubst-if}, and
  3174. @code{cl-nsubst-if-not} functions are defined similarly.
  3175. @defun cl-sublis alist tree @t{&key :test :test-not :key}
  3176. This function is like @code{cl-subst}, except that it takes an
  3177. association list @var{alist} of @var{old}-@var{new} pairs.
  3178. Each element of the tree (after applying the @code{:key}
  3179. function, if any), is compared with the @sc{car}s of
  3180. @var{alist}; if it matches, it is replaced by the corresponding
  3181. @sc{cdr}.
  3182. @end defun
  3183. @defun cl-nsublis alist tree @t{&key :test :test-not :key}
  3184. This is a destructive version of @code{cl-sublis}.
  3185. @end defun
  3186. @node Lists as Sets
  3187. @section Lists as Sets
  3188. @noindent
  3189. These functions perform operations on lists that represent sets
  3190. of elements.
  3191. @defun cl-member item list @t{&key :test :test-not :key}
  3192. This function searches @var{list} for an element matching @var{item}.
  3193. If a match is found, it returns the cons cell whose @sc{car} was
  3194. the matching element. Otherwise, it returns @code{nil}. Elements
  3195. are compared by @code{eql} by default; you can use the @code{:test},
  3196. @code{:test-not}, and @code{:key} arguments to modify this behavior.
  3197. @xref{Sequences}.
  3198. The standard Emacs lisp function @code{member} uses @code{equal} for
  3199. comparisons; it is equivalent to @code{(cl-member @var{item} @var{list}
  3200. :test 'equal)}. With no keyword arguments, @code{cl-member} is
  3201. equivalent to @code{memq}.
  3202. @end defun
  3203. @findex cl-member-if
  3204. @findex cl-member-if-not
  3205. The @code{cl-member-if} and @code{cl-member-if-not} functions
  3206. analogously search for elements that satisfy a given predicate.
  3207. @defun cl-tailp sublist list
  3208. This function returns @code{t} if @var{sublist} is a sublist of
  3209. @var{list}, i.e., if @var{sublist} is @code{eql} to @var{list} or to
  3210. any of its @sc{cdr}s.
  3211. @end defun
  3212. @defun cl-adjoin item list @t{&key :test :test-not :key}
  3213. This function conses @var{item} onto the front of @var{list},
  3214. like @code{(cons @var{item} @var{list})}, but only if @var{item}
  3215. is not already present on the list (as determined by @code{cl-member}).
  3216. If a @code{:key} argument is specified, it is applied to
  3217. @var{item} as well as to the elements of @var{list} during
  3218. the search, on the reasoning that @var{item} is ``about'' to
  3219. become part of the list.
  3220. @end defun
  3221. @defun cl-union list1 list2 @t{&key :test :test-not :key}
  3222. This function combines two lists that represent sets of items,
  3223. returning a list that represents the union of those two sets.
  3224. The resulting list contains all items that appear in @var{list1}
  3225. or @var{list2}, and no others. If an item appears in both
  3226. @var{list1} and @var{list2} it is copied only once. If
  3227. an item is duplicated in @var{list1} or @var{list2}, it is
  3228. undefined whether or not that duplication will survive in the
  3229. result list. The order of elements in the result list is also
  3230. undefined.
  3231. @end defun
  3232. @defun cl-nunion list1 list2 @t{&key :test :test-not :key}
  3233. This is a destructive version of @code{cl-union}; rather than copying,
  3234. it tries to reuse the storage of the argument lists if possible.
  3235. @end defun
  3236. @defun cl-intersection list1 list2 @t{&key :test :test-not :key}
  3237. This function computes the intersection of the sets represented
  3238. by @var{list1} and @var{list2}. It returns the list of items
  3239. that appear in both @var{list1} and @var{list2}.
  3240. @end defun
  3241. @defun cl-nintersection list1 list2 @t{&key :test :test-not :key}
  3242. This is a destructive version of @code{cl-intersection}. It
  3243. tries to reuse storage of @var{list1} rather than copying.
  3244. It does @emph{not} reuse the storage of @var{list2}.
  3245. @end defun
  3246. @defun cl-set-difference list1 list2 @t{&key :test :test-not :key}
  3247. This function computes the ``set difference'' of @var{list1}
  3248. and @var{list2}, i.e., the set of elements that appear in
  3249. @var{list1} but @emph{not} in @var{list2}.
  3250. @end defun
  3251. @defun cl-nset-difference list1 list2 @t{&key :test :test-not :key}
  3252. This is a destructive @code{cl-set-difference}, which will try
  3253. to reuse @var{list1} if possible.
  3254. @end defun
  3255. @defun cl-set-exclusive-or list1 list2 @t{&key :test :test-not :key}
  3256. This function computes the ``set exclusive or'' of @var{list1}
  3257. and @var{list2}, i.e., the set of elements that appear in
  3258. exactly one of @var{list1} and @var{list2}.
  3259. @end defun
  3260. @defun cl-nset-exclusive-or list1 list2 @t{&key :test :test-not :key}
  3261. This is a destructive @code{cl-set-exclusive-or}, which will try
  3262. to reuse @var{list1} and @var{list2} if possible.
  3263. @end defun
  3264. @defun cl-subsetp list1 list2 @t{&key :test :test-not :key}
  3265. This function checks whether @var{list1} represents a subset
  3266. of @var{list2}, i.e., whether every element of @var{list1}
  3267. also appears in @var{list2}.
  3268. @end defun
  3269. @node Association Lists
  3270. @section Association Lists
  3271. @noindent
  3272. An @dfn{association list} is a list representing a mapping from
  3273. one set of values to another; any list whose elements are cons
  3274. cells is an association list.
  3275. @defun cl-assoc item a-list @t{&key :test :test-not :key}
  3276. This function searches the association list @var{a-list} for an
  3277. element whose @sc{car} matches (in the sense of @code{:test},
  3278. @code{:test-not}, and @code{:key}, or by comparison with @code{eql})
  3279. a given @var{item}. It returns the matching element, if any,
  3280. otherwise @code{nil}. It ignores elements of @var{a-list} that
  3281. are not cons cells. (This corresponds to the behavior of
  3282. @code{assq} and @code{assoc} in Emacs Lisp; Common Lisp's
  3283. @code{assoc} ignores @code{nil}s but considers any other non-cons
  3284. elements of @var{a-list} to be an error.)
  3285. @end defun
  3286. @defun cl-rassoc item a-list @t{&key :test :test-not :key}
  3287. This function searches for an element whose @sc{cdr} matches
  3288. @var{item}. If @var{a-list} represents a mapping, this applies
  3289. the inverse of the mapping to @var{item}.
  3290. @end defun
  3291. @findex cl-assoc-if
  3292. @findex cl-assoc-if-not
  3293. @findex cl-rassoc-if
  3294. @findex cl-rassoc-if-not
  3295. The @code{cl-assoc-if}, @code{cl-assoc-if-not}, @code{cl-rassoc-if},
  3296. and @code{cl-rassoc-if-not} functions are defined similarly.
  3297. Two simple functions for constructing association lists are:
  3298. @defun cl-acons key value alist
  3299. This is equivalent to @code{(cons (cons @var{key} @var{value}) @var{alist})}.
  3300. @end defun
  3301. @defun cl-pairlis keys values &optional alist
  3302. This is equivalent to @code{(nconc (cl-mapcar 'cons @var{keys} @var{values})
  3303. @var{alist})}.
  3304. @end defun
  3305. @node Structures
  3306. @chapter Structures
  3307. @noindent
  3308. The Common Lisp @dfn{structure} mechanism provides a general way
  3309. to define data types similar to C's @code{struct} types. A
  3310. structure is a Lisp object containing some number of @dfn{slots},
  3311. each of which can hold any Lisp data object. Functions are
  3312. provided for accessing and setting the slots, creating or copying
  3313. structure objects, and recognizing objects of a particular structure
  3314. type.
  3315. In true Common Lisp, each structure type is a new type distinct
  3316. from all existing Lisp types. Since the underlying Emacs Lisp
  3317. system provides no way to create new distinct types, this package
  3318. implements structures as vectors (or lists upon request) with a
  3319. special ``tag'' symbol to identify them.
  3320. @defmac cl-defstruct name slots@dots{}
  3321. The @code{cl-defstruct} form defines a new structure type called
  3322. @var{name}, with the specified @var{slots}. (The @var{slots}
  3323. may begin with a string which documents the structure type.)
  3324. In the simplest case, @var{name} and each of the @var{slots}
  3325. are symbols. For example,
  3326. @example
  3327. (cl-defstruct person name age sex)
  3328. @end example
  3329. @noindent
  3330. defines a struct type called @code{person} that contains three
  3331. slots. Given a @code{person} object @var{p}, you can access those
  3332. slots by calling @code{(person-name @var{p})}, @code{(person-age @var{p})},
  3333. and @code{(person-sex @var{p})}. You can also change these slots by
  3334. using @code{setf} on any of these place forms, for example:
  3335. @example
  3336. (cl-incf (person-age birthday-boy))
  3337. @end example
  3338. You can create a new @code{person} by calling @code{make-person},
  3339. which takes keyword arguments @code{:name}, @code{:age}, and
  3340. @code{:sex} to specify the initial values of these slots in the
  3341. new object. (Omitting any of these arguments leaves the corresponding
  3342. slot ``undefined'', according to the Common Lisp standard; in Emacs
  3343. Lisp, such uninitialized slots are filled with @code{nil}.)
  3344. Given a @code{person}, @code{(copy-person @var{p})} makes a new
  3345. object of the same type whose slots are @code{eq} to those of @var{p}.
  3346. Given any Lisp object @var{x}, @code{(person-p @var{x})} returns
  3347. true if @var{x} is a @code{person}, and false otherwise.
  3348. Accessors like @code{person-name} normally check their arguments
  3349. (effectively using @code{person-p}) and signal an error if the
  3350. argument is the wrong type. This check is affected by
  3351. @code{(optimize (safety @dots{}))} declarations. Safety level 1,
  3352. the default, uses a somewhat optimized check that will detect all
  3353. incorrect arguments, but may use an uninformative error message
  3354. (e.g., ``expected a vector'' instead of ``expected a @code{person}'').
  3355. Safety level 0 omits all checks except as provided by the underlying
  3356. @code{aref} call; safety levels 2 and 3 do rigorous checking that will
  3357. always print a descriptive error message for incorrect inputs.
  3358. @xref{Declarations}.
  3359. @example
  3360. (setq dave (make-person :name "Dave" :sex 'male))
  3361. @result{} [cl-struct-person "Dave" nil male]
  3362. (setq other (copy-person dave))
  3363. @result{} [cl-struct-person "Dave" nil male]
  3364. (eq dave other)
  3365. @result{} nil
  3366. (eq (person-name dave) (person-name other))
  3367. @result{} t
  3368. (person-p dave)
  3369. @result{} t
  3370. (person-p [1 2 3 4])
  3371. @result{} nil
  3372. (person-p "Bogus")
  3373. @result{} nil
  3374. (person-p '[cl-struct-person counterfeit person object])
  3375. @result{} t
  3376. @end example
  3377. In general, @var{name} is either a name symbol or a list of a name
  3378. symbol followed by any number of @dfn{struct options}; each @var{slot}
  3379. is either a slot symbol or a list of the form @samp{(@var{slot-name}
  3380. @var{default-value} @var{slot-options}@dots{})}. The @var{default-value}
  3381. is a Lisp form that is evaluated any time an instance of the
  3382. structure type is created without specifying that slot's value.
  3383. Common Lisp defines several slot options, but the only one
  3384. implemented in this package is @code{:read-only}. A non-@code{nil}
  3385. value for this option means the slot should not be @code{setf}-able;
  3386. the slot's value is determined when the object is created and does
  3387. not change afterward.
  3388. @example
  3389. (cl-defstruct person
  3390. (name nil :read-only t)
  3391. age
  3392. (sex 'unknown))
  3393. @end example
  3394. Any slot options other than @code{:read-only} are ignored.
  3395. For obscure historical reasons, structure options take a different
  3396. form than slot options. A structure option is either a keyword
  3397. symbol, or a list beginning with a keyword symbol possibly followed
  3398. by arguments. (By contrast, slot options are key-value pairs not
  3399. enclosed in lists.)
  3400. @example
  3401. (cl-defstruct (person (:constructor create-person)
  3402. (:type list)
  3403. :named)
  3404. name age sex)
  3405. @end example
  3406. The following structure options are recognized.
  3407. @table @code
  3408. @item :conc-name
  3409. The argument is a symbol whose print name is used as the prefix for
  3410. the names of slot accessor functions. The default is the name of
  3411. the struct type followed by a hyphen. The option @code{(:conc-name p-)}
  3412. would change this prefix to @code{p-}. Specifying @code{nil} as an
  3413. argument means no prefix, so that the slot names themselves are used
  3414. to name the accessor functions.
  3415. @item :constructor
  3416. In the simple case, this option takes one argument which is an
  3417. alternate name to use for the constructor function. The default
  3418. is @code{make-@var{name}}, e.g., @code{make-person}. The above
  3419. example changes this to @code{create-person}. Specifying @code{nil}
  3420. as an argument means that no standard constructor should be
  3421. generated at all.
  3422. In the full form of this option, the constructor name is followed
  3423. by an arbitrary argument list. @xref{Program Structure}, for a
  3424. description of the format of Common Lisp argument lists. All
  3425. options, such as @code{&rest} and @code{&key}, are supported.
  3426. The argument names should match the slot names; each slot is
  3427. initialized from the corresponding argument. Slots whose names
  3428. do not appear in the argument list are initialized based on the
  3429. @var{default-value} in their slot descriptor. Also, @code{&optional}
  3430. and @code{&key} arguments that don't specify defaults take their
  3431. defaults from the slot descriptor. It is valid to include arguments
  3432. that don't correspond to slot names; these are useful if they are
  3433. referred to in the defaults for optional, keyword, or @code{&aux}
  3434. arguments that @emph{do} correspond to slots.
  3435. You can specify any number of full-format @code{:constructor}
  3436. options on a structure. The default constructor is still generated
  3437. as well unless you disable it with a simple-format @code{:constructor}
  3438. option.
  3439. @example
  3440. (cl-defstruct
  3441. (person
  3442. (:constructor nil) ; no default constructor
  3443. (:constructor new-person
  3444. (name sex &optional (age 0)))
  3445. (:constructor new-hound (&key (name "Rover")
  3446. (dog-years 0)
  3447. &aux (age (* 7 dog-years))
  3448. (sex 'canine))))
  3449. name age sex)
  3450. @end example
  3451. The first constructor here takes its arguments positionally rather
  3452. than by keyword. (In official Common Lisp terminology, constructors
  3453. that work By Order of Arguments instead of by keyword are called
  3454. ``BOA constructors''. No, I'm not making this up.) For example,
  3455. @code{(new-person "Jane" 'female)} generates a person whose slots
  3456. are @code{"Jane"}, 0, and @code{female}, respectively.
  3457. The second constructor takes two keyword arguments, @code{:name},
  3458. which initializes the @code{name} slot and defaults to @code{"Rover"},
  3459. and @code{:dog-years}, which does not itself correspond to a slot
  3460. but which is used to initialize the @code{age} slot. The @code{sex}
  3461. slot is forced to the symbol @code{canine} with no syntax for
  3462. overriding it.
  3463. @item :copier
  3464. The argument is an alternate name for the copier function for
  3465. this type. The default is @code{copy-@var{name}}. @code{nil}
  3466. means not to generate a copier function. (In this implementation,
  3467. all copier functions are simply synonyms for @code{copy-sequence}.)
  3468. @item :predicate
  3469. The argument is an alternate name for the predicate that recognizes
  3470. objects of this type. The default is @code{@var{name}-p}. @code{nil}
  3471. means not to generate a predicate function. (If the @code{:type}
  3472. option is used without the @code{:named} option, no predicate is
  3473. ever generated.)
  3474. In true Common Lisp, @code{typep} is always able to recognize a
  3475. structure object even if @code{:predicate} was used. In this
  3476. package, @code{cl-typep} simply looks for a function called
  3477. @code{@var{typename}-p}, so it will work for structure types
  3478. only if they used the default predicate name.
  3479. @item :include
  3480. This option implements a very limited form of C++-style inheritance.
  3481. The argument is the name of another structure type previously
  3482. created with @code{cl-defstruct}. The effect is to cause the new
  3483. structure type to inherit all of the included structure's slots
  3484. (plus, of course, any new slots described by this struct's slot
  3485. descriptors). The new structure is considered a ``specialization''
  3486. of the included one. In fact, the predicate and slot accessors
  3487. for the included type will also accept objects of the new type.
  3488. If there are extra arguments to the @code{:include} option after
  3489. the included-structure name, these options are treated as replacement
  3490. slot descriptors for slots in the included structure, possibly with
  3491. modified default values. Borrowing an example from Steele:
  3492. @example
  3493. (cl-defstruct person name (age 0) sex)
  3494. @result{} person
  3495. (cl-defstruct (astronaut (:include person (age 45)))
  3496. helmet-size
  3497. (favorite-beverage 'tang))
  3498. @result{} astronaut
  3499. (setq joe (make-person :name "Joe"))
  3500. @result{} [cl-struct-person "Joe" 0 nil]
  3501. (setq buzz (make-astronaut :name "Buzz"))
  3502. @result{} [cl-struct-astronaut "Buzz" 45 nil nil tang]
  3503. (list (person-p joe) (person-p buzz))
  3504. @result{} (t t)
  3505. (list (astronaut-p joe) (astronaut-p buzz))
  3506. @result{} (nil t)
  3507. (person-name buzz)
  3508. @result{} "Buzz"
  3509. (astronaut-name joe)
  3510. @result{} error: "astronaut-name accessing a non-astronaut"
  3511. @end example
  3512. Thus, if @code{astronaut} is a specialization of @code{person},
  3513. then every @code{astronaut} is also a @code{person} (but not the
  3514. other way around). Every @code{astronaut} includes all the slots
  3515. of a @code{person}, plus extra slots that are specific to
  3516. astronauts. Operations that work on people (like @code{person-name})
  3517. work on astronauts just like other people.
  3518. @item :print-function
  3519. In full Common Lisp, this option allows you to specify a function
  3520. that is called to print an instance of the structure type. The
  3521. Emacs Lisp system offers no hooks into the Lisp printer which would
  3522. allow for such a feature, so this package simply ignores
  3523. @code{:print-function}.
  3524. @item :type
  3525. The argument should be one of the symbols @code{vector} or
  3526. @code{list}. This tells which underlying Lisp data type should be
  3527. used to implement the new structure type. Records are used by
  3528. default, but @code{(:type vector)} will cause structure objects to be
  3529. stored as vectors and @code{(:type list)} lists instead.
  3530. The record and vector representations for structure objects have the
  3531. advantage that all structure slots can be accessed quickly, although
  3532. creating them are a bit slower in Emacs Lisp. Lists are easier to
  3533. create, but take a relatively long time accessing the later slots.
  3534. @item :named
  3535. This option, which takes no arguments, causes a characteristic ``tag''
  3536. symbol to be stored at the front of the structure object. Using
  3537. @code{:type} without also using @code{:named} will result in a
  3538. structure type stored as plain vectors or lists with no identifying
  3539. features.
  3540. The default, if you don't specify @code{:type} explicitly, is to use
  3541. records, which are always tagged. Therefore, @code{:named} is only
  3542. useful in conjunction with @code{:type}.
  3543. @example
  3544. (cl-defstruct (person1) name age sex)
  3545. (cl-defstruct (person2 (:type list) :named) name age sex)
  3546. (cl-defstruct (person3 (:type list)) name age sex)
  3547. (cl-defstruct (person4 (:type vector)) name age sex)
  3548. (setq p1 (make-person1))
  3549. @result{} #s(person1 nil nil nil)
  3550. (setq p2 (make-person2))
  3551. @result{} (person2 nil nil nil)
  3552. (setq p3 (make-person3))
  3553. @result{} (nil nil nil)
  3554. (setq p4 (make-person4))
  3555. @result{} [nil nil nil]
  3556. (person1-p p1)
  3557. @result{} t
  3558. (person2-p p2)
  3559. @result{} t
  3560. (person3-p p3)
  3561. @result{} error: function person3-p undefined
  3562. @end example
  3563. Since unnamed structures don't have tags, @code{cl-defstruct} is not
  3564. able to make a useful predicate for recognizing them. Also,
  3565. accessors like @code{person3-name} will be generated but they
  3566. will not be able to do any type checking. The @code{person3-name}
  3567. function, for example, will simply be a synonym for @code{car} in
  3568. this case. By contrast, @code{person2-name} is able to verify
  3569. that its argument is indeed a @code{person2} object before
  3570. proceeding.
  3571. @item :initial-offset
  3572. The argument must be a nonnegative integer. It specifies a
  3573. number of slots to be left ``empty'' at the front of the
  3574. structure. If the structure is named, the tag appears at the
  3575. specified position in the list or vector; otherwise, the first
  3576. slot appears at that position. Earlier positions are filled
  3577. with @code{nil} by the constructors and ignored otherwise. If
  3578. the type @code{:include}s another type, then @code{:initial-offset}
  3579. specifies a number of slots to be skipped between the last slot
  3580. of the included type and the first new slot.
  3581. @end table
  3582. @end defmac
  3583. Except as noted, the @code{cl-defstruct} facility of this package is
  3584. entirely compatible with that of Common Lisp.
  3585. The @code{cl-defstruct} package also provides a few structure
  3586. introspection functions.
  3587. @defun cl-struct-sequence-type struct-type
  3588. This function returns the underlying data structure for
  3589. @code{struct-type}, which is a symbol. It returns @code{record},
  3590. @code{vector} or @code{list}, or @code{nil} if @code{struct-type} is
  3591. not actually a structure.
  3592. @end defun
  3593. @defun cl-struct-slot-info struct-type
  3594. This function returns a list of slot descriptors for structure
  3595. @code{struct-type}. Each entry in the list is @code{(name . opts)},
  3596. where @code{name} is the name of the slot and @code{opts} is the list
  3597. of slot options given to @code{defstruct}. Dummy entries represent
  3598. the slots used for the struct name and that are skipped to implement
  3599. @code{:initial-offset}.
  3600. @end defun
  3601. @defun cl-struct-slot-offset struct-type slot-name
  3602. Return the offset of slot @code{slot-name} in @code{struct-type}. The
  3603. returned zero-based slot index is relative to the start of the
  3604. structure data type and is adjusted for any structure name and
  3605. :initial-offset slots. Signal error if struct @code{struct-type} does
  3606. not contain @code{slot-name}.
  3607. @end defun
  3608. @defun cl-struct-slot-value struct-type slot-name inst
  3609. Return the value of slot @code{slot-name} in @code{inst} of
  3610. @code{struct-type}. @code{struct} and @code{slot-name} are symbols.
  3611. @code{inst} is a structure instance. This routine is also a
  3612. @code{setf} place. Can signal the same errors as @code{cl-struct-slot-offset}.
  3613. @end defun
  3614. @node Assertions
  3615. @chapter Assertions and Errors
  3616. @noindent
  3617. This section describes two macros that test @dfn{assertions}, i.e.,
  3618. conditions which must be true if the program is operating correctly.
  3619. Assertions never add to the behavior of a Lisp program; they simply
  3620. make ``sanity checks'' to make sure everything is as it should be.
  3621. If the optimization property @code{speed} has been set to 3, and
  3622. @code{safety} is less than 3, then the byte-compiler will optimize
  3623. away the following assertions. Because assertions might be optimized
  3624. away, it is a bad idea for them to include side-effects.
  3625. @defmac cl-assert test-form [show-args string args@dots{}]
  3626. This form verifies that @var{test-form} is true (i.e., evaluates to
  3627. a non-@code{nil} value). If so, it returns @code{nil}. If the test
  3628. is not satisfied, @code{cl-assert} signals an error.
  3629. A default error message will be supplied which includes @var{test-form}.
  3630. You can specify a different error message by including a @var{string}
  3631. argument plus optional extra arguments. Those arguments are simply
  3632. passed to @code{error} to signal the error.
  3633. If the optional second argument @var{show-args} is @code{t} instead
  3634. of @code{nil}, then the error message (with or without @var{string})
  3635. will also include all non-constant arguments of the top-level
  3636. @var{form}. For example:
  3637. @example
  3638. (cl-assert (> x 10) t "x is too small: %d")
  3639. @end example
  3640. This usage of @var{show-args} is an extension to Common Lisp. In
  3641. true Common Lisp, the second argument gives a list of @var{places}
  3642. which can be @code{setf}'d by the user before continuing from the
  3643. error. Since Emacs Lisp does not support continuable errors, it
  3644. makes no sense to specify @var{places}.
  3645. @end defmac
  3646. @defmac cl-check-type form type [string]
  3647. This form verifies that @var{form} evaluates to a value of type
  3648. @var{type}. If so, it returns @code{nil}. If not, @code{cl-check-type}
  3649. signals a @code{wrong-type-argument} error. The default error message
  3650. lists the erroneous value along with @var{type} and @var{form}
  3651. themselves. If @var{string} is specified, it is included in the
  3652. error message in place of @var{type}. For example:
  3653. @example
  3654. (cl-check-type x (integer 1 *) "a positive integer")
  3655. @end example
  3656. @xref{Type Predicates}, for a description of the type specifiers
  3657. that may be used for @var{type}.
  3658. Note that in Common Lisp, the first argument to @code{check-type}
  3659. must be a @var{place} suitable for use by @code{setf}, because
  3660. @code{check-type} signals a continuable error that allows the
  3661. user to modify @var{place}.
  3662. @end defmac
  3663. @node Efficiency Concerns
  3664. @appendix Efficiency Concerns
  3665. @appendixsec Macros
  3666. @noindent
  3667. Many of the advanced features of this package, such as @code{cl-defun},
  3668. @code{cl-loop}, etc., are implemented as Lisp macros. In
  3669. byte-compiled code, these complex notations will be expanded into
  3670. equivalent Lisp code which is simple and efficient. For example,
  3671. the form
  3672. @example
  3673. (cl-incf i n)
  3674. @end example
  3675. @noindent
  3676. is expanded at compile-time to the Lisp form
  3677. @example
  3678. (setq i (+ i n))
  3679. @end example
  3680. @noindent
  3681. which is the most efficient ways of doing this operation
  3682. in Lisp. Thus, there is no performance penalty for using the more
  3683. readable @code{cl-incf} form in your compiled code.
  3684. @emph{Interpreted} code, on the other hand, must expand these macros
  3685. every time they are executed. For this reason it is strongly
  3686. recommended that code making heavy use of macros be compiled.
  3687. A loop using @code{cl-incf} a hundred times will execute considerably
  3688. faster if compiled, and will also garbage-collect less because the
  3689. macro expansion will not have to be generated, used, and thrown away a
  3690. hundred times.
  3691. You can find out how a macro expands by using the
  3692. @code{cl-prettyexpand} function.
  3693. @defun cl-prettyexpand form &optional full
  3694. This function takes a single Lisp form as an argument and inserts
  3695. a nicely formatted copy of it in the current buffer (which must be
  3696. in Lisp mode so that indentation works properly). It also expands
  3697. all Lisp macros that appear in the form. The easiest way to use
  3698. this function is to go to the @file{*scratch*} buffer and type, say,
  3699. @example
  3700. (cl-prettyexpand '(cl-loop for x below 10 collect x))
  3701. @end example
  3702. @noindent
  3703. and type @kbd{C-x C-e} immediately after the closing parenthesis;
  3704. an expansion similar to:
  3705. @example
  3706. (cl-block nil
  3707. (let* ((x 0)
  3708. (G1004 nil))
  3709. (while (< x 10)
  3710. (setq G1004 (cons x G1004))
  3711. (setq x (+ x 1)))
  3712. (nreverse G1004)))
  3713. @end example
  3714. @noindent
  3715. will be inserted into the buffer. (The @code{cl-block} macro is
  3716. expanded differently in the interpreter and compiler, so
  3717. @code{cl-prettyexpand} just leaves it alone. The temporary
  3718. variable @code{G1004} was created by @code{cl-gensym}.)
  3719. If the optional argument @var{full} is true, then @emph{all}
  3720. macros are expanded, including @code{cl-block}, @code{cl-eval-when},
  3721. and compiler macros. Expansion is done as if @var{form} were
  3722. a top-level form in a file being compiled.
  3723. @c FIXME none of these examples are still applicable.
  3724. @ignore
  3725. For example,
  3726. @example
  3727. (cl-prettyexpand '(cl-pushnew 'x list))
  3728. @print{} (setq list (cl-adjoin 'x list))
  3729. (cl-prettyexpand '(cl-pushnew 'x list) t)
  3730. @print{} (setq list (if (memq 'x list) list (cons 'x list)))
  3731. (cl-prettyexpand '(caddr (cl-member 'a list)) t)
  3732. @print{} (car (cdr (cdr (memq 'a list))))
  3733. @end example
  3734. @end ignore
  3735. Note that @code{cl-adjoin}, @code{cl-caddr}, and @code{cl-member} all
  3736. have built-in compiler macros to optimize them in common cases.
  3737. @end defun
  3738. @appendixsec Error Checking
  3739. @noindent
  3740. Common Lisp compliance has in general not been sacrificed for the
  3741. sake of efficiency. A few exceptions have been made for cases
  3742. where substantial gains were possible at the expense of marginal
  3743. incompatibility.
  3744. The Common Lisp standard (as embodied in Steele's book) uses the
  3745. phrase ``it is an error if'' to indicate a situation that is not
  3746. supposed to arise in complying programs; implementations are strongly
  3747. encouraged but not required to signal an error in these situations.
  3748. This package sometimes omits such error checking in the interest of
  3749. compactness and efficiency. For example, @code{cl-do} variable
  3750. specifiers are supposed to be lists of one, two, or three forms; extra
  3751. forms are ignored by this package rather than signaling a syntax
  3752. error. Functions taking keyword arguments will accept an odd number
  3753. of arguments, treating the trailing keyword as if it were followed by
  3754. the value @code{nil}.
  3755. Argument lists (as processed by @code{cl-defun} and friends)
  3756. @emph{are} checked rigorously except for the minor point just
  3757. mentioned; in particular, keyword arguments are checked for
  3758. validity, and @code{&allow-other-keys} and @code{:allow-other-keys}
  3759. are fully implemented. Keyword validity checking is slightly
  3760. time consuming (though not too bad in byte-compiled code);
  3761. you can use @code{&allow-other-keys} to omit this check. Functions
  3762. defined in this package such as @code{cl-find} and @code{cl-member}
  3763. do check their keyword arguments for validity.
  3764. @appendixsec Compiler Optimizations
  3765. @noindent
  3766. Changing the value of @code{byte-optimize} from the default @code{t}
  3767. is highly discouraged; many of the Common
  3768. Lisp macros emit
  3769. code that can be improved by optimization. In particular,
  3770. @code{cl-block}s (whether explicit or implicit in constructs like
  3771. @code{cl-defun} and @code{cl-loop}) carry a fair run-time penalty; the
  3772. byte-compiler removes @code{cl-block}s that are not actually
  3773. referenced by @code{cl-return} or @code{cl-return-from} inside the block.
  3774. @node Common Lisp Compatibility
  3775. @appendix Common Lisp Compatibility
  3776. @noindent
  3777. The following is a list of some of the most important
  3778. incompatibilities between this package and Common Lisp as documented
  3779. in Steele (2nd edition).
  3780. The word @code{cl-defun} is required instead of @code{defun} in order
  3781. to use extended Common Lisp argument lists in a function. Likewise,
  3782. @code{cl-defmacro} and @code{cl-function} are versions of those forms
  3783. which understand full-featured argument lists. The @code{&whole}
  3784. keyword does not work in @code{cl-defmacro} argument lists (except
  3785. inside recursive argument lists).
  3786. The @code{equal} predicate does not distinguish
  3787. between IEEE floating-point plus and minus zero. The @code{cl-equalp}
  3788. predicate has several differences with Common Lisp; @pxref{Predicates}.
  3789. The @code{cl-do-all-symbols} form is the same as @code{cl-do-symbols}
  3790. with no @var{obarray} argument. In Common Lisp, this form would
  3791. iterate over all symbols in all packages. Since Emacs obarrays
  3792. are not a first-class package mechanism, there is no way for
  3793. @code{cl-do-all-symbols} to locate any but the default obarray.
  3794. The @code{cl-loop} macro is complete except that @code{loop-finish}
  3795. and type specifiers are unimplemented.
  3796. The multiple-value return facility treats lists as multiple
  3797. values, since Emacs Lisp cannot support multiple return values
  3798. directly. The macros will be compatible with Common Lisp if
  3799. @code{cl-values} or @code{cl-values-list} is always used to return to
  3800. a @code{cl-multiple-value-bind} or other multiple-value receiver;
  3801. if @code{cl-values} is used without @code{cl-multiple-value-@dots{}}
  3802. or vice-versa the effect will be different from Common Lisp.
  3803. Many Common Lisp declarations are ignored, and others match
  3804. the Common Lisp standard in concept but not in detail. For
  3805. example, local @code{special} declarations, which are purely
  3806. advisory in Emacs Lisp, do not rigorously obey the scoping rules
  3807. set down in Steele's book.
  3808. The variable @code{cl--gensym-counter} starts out with zero.
  3809. The @code{cl-defstruct} facility is compatible, except that the
  3810. @code{:type} slot option is ignored.
  3811. The second argument of @code{cl-check-type} is treated differently.
  3812. @node Porting Common Lisp
  3813. @appendix Porting Common Lisp
  3814. @noindent
  3815. This package is meant to be used as an extension to Emacs Lisp,
  3816. not as an Emacs implementation of true Common Lisp. Some of the
  3817. remaining differences between Emacs Lisp and Common Lisp make it
  3818. difficult to port large Common Lisp applications to Emacs. For
  3819. one, some of the features in this package are not fully compliant
  3820. with ANSI or Steele; @pxref{Common Lisp Compatibility}. But there
  3821. are also quite a few features that this package does not provide
  3822. at all. Here are some major omissions that you will want to watch out
  3823. for when bringing Common Lisp code into Emacs.
  3824. @itemize @bullet
  3825. @item
  3826. Case-insensitivity. Symbols in Common Lisp are case-insensitive
  3827. by default. Some programs refer to a function or variable as
  3828. @code{foo} in one place and @code{Foo} or @code{FOO} in another.
  3829. Emacs Lisp will treat these as three distinct symbols.
  3830. Some Common Lisp code is written entirely in upper case. While Emacs
  3831. is happy to let the program's own functions and variables use
  3832. this convention, calls to Lisp builtins like @code{if} and
  3833. @code{defun} will have to be changed to lower case.
  3834. @item
  3835. Lexical scoping. In Common Lisp, function arguments and @code{let}
  3836. bindings apply only to references physically within their bodies (or
  3837. within macro expansions in their bodies). Traditionally, Emacs Lisp
  3838. uses @dfn{dynamic scoping} wherein a binding to a variable is visible
  3839. even inside functions called from the body.
  3840. @xref{Dynamic Binding,,,elisp,GNU Emacs Lisp Reference Manual}.
  3841. Lexical binding is available since Emacs 24.1, so be sure to set
  3842. @code{lexical-binding} to @code{t} if you need to emulate this aspect
  3843. of Common Lisp. @xref{Lexical Binding,,,elisp,GNU Emacs Lisp Reference Manual}.
  3844. Here is an example of a Common Lisp code fragment that would fail in
  3845. Emacs Lisp if @code{lexical-binding} were set to @code{nil}:
  3846. @example
  3847. (defun map-odd-elements (func list)
  3848. (loop for x in list
  3849. for flag = t then (not flag)
  3850. collect (if flag x (funcall func x))))
  3851. (defun add-odd-elements (list x)
  3852. (map-odd-elements (lambda (a) (+ a x)) list))
  3853. @end example
  3854. @noindent
  3855. With lexical binding, the two functions' usages of @code{x} are
  3856. completely independent. With dynamic binding, the binding to @code{x}
  3857. made by @code{add-odd-elements} will have been hidden by the binding
  3858. in @code{map-odd-elements} by the time the @code{(+ a x)} function is
  3859. called.
  3860. Internally, this package uses lexical binding so that such problems do
  3861. not occur. @xref{Obsolete Lexical Binding}, for a description of the obsolete
  3862. @code{lexical-let} form that emulates a Common Lisp-style lexical
  3863. binding when dynamic binding is in use.
  3864. @item
  3865. Reader macros. Common Lisp includes a second type of macro that
  3866. works at the level of individual characters. For example, Common
  3867. Lisp implements the quote notation by a reader macro called @code{'},
  3868. whereas Emacs Lisp's parser just treats quote as a special case.
  3869. Some Lisp packages use reader macros to create special syntaxes
  3870. for themselves, which the Emacs parser is incapable of reading.
  3871. @item
  3872. Other syntactic features. Common Lisp provides a number of
  3873. notations beginning with @code{#} that the Emacs Lisp parser
  3874. won't understand. For example, @samp{#| @dots{} |#} is an
  3875. alternate comment notation, and @samp{#+lucid (foo)} tells
  3876. the parser to ignore the @code{(foo)} except in Lucid Common
  3877. Lisp.
  3878. @item
  3879. Packages. In Common Lisp, symbols are divided into @dfn{packages}.
  3880. Symbols that are Lisp built-ins are typically stored in one package;
  3881. symbols that are vendor extensions are put in another, and each
  3882. application program would have a package for its own symbols.
  3883. Certain symbols are ``exported'' by a package and others are
  3884. internal; certain packages ``use'' or import the exported symbols
  3885. of other packages. To access symbols that would not normally be
  3886. visible due to this importing and exporting, Common Lisp provides
  3887. a syntax like @code{package:symbol} or @code{package::symbol}.
  3888. Emacs Lisp has a single namespace for all interned symbols, and
  3889. then uses a naming convention of putting a prefix like @code{cl-}
  3890. in front of the name. Some Emacs packages adopt the Common Lisp-like
  3891. convention of using @code{cl:} or @code{cl::} as the prefix.
  3892. However, the Emacs parser does not understand colons and just
  3893. treats them as part of the symbol name. Thus, while @code{mapcar}
  3894. and @code{lisp:mapcar} may refer to the same symbol in Common
  3895. Lisp, they are totally distinct in Emacs Lisp. Common Lisp
  3896. programs that refer to a symbol by the full name sometimes
  3897. and the short name other times will not port cleanly to Emacs.
  3898. Emacs Lisp does have a concept of ``obarrays'', which are
  3899. package-like collections of symbols, but this feature is not
  3900. strong enough to be used as a true package mechanism.
  3901. @item
  3902. The @code{format} function is quite different between Common
  3903. Lisp and Emacs Lisp. It takes an additional ``destination''
  3904. argument before the format string. A destination of @code{nil}
  3905. means to format to a string as in Emacs Lisp; a destination
  3906. of @code{t} means to write to the terminal (similar to
  3907. @code{message} in Emacs). Also, format control strings are
  3908. utterly different; @code{~} is used instead of @code{%} to
  3909. introduce format codes, and the set of available codes is
  3910. much richer. There are no notations like @code{\n} for
  3911. string literals; instead, @code{format} is used with the
  3912. ``newline'' format code, @code{~%}. More advanced formatting
  3913. codes provide such features as paragraph filling, case
  3914. conversion, and even loops and conditionals.
  3915. While it would have been possible to implement most of Common
  3916. Lisp @code{format} in this package (under the name @code{cl-format},
  3917. of course), it was not deemed worthwhile. It would have required
  3918. a huge amount of code to implement even a decent subset of
  3919. @code{format}, yet the functionality it would provide over
  3920. Emacs Lisp's @code{format} would rarely be useful.
  3921. @item
  3922. Vector constants use square brackets in Emacs Lisp, but
  3923. @code{#(a b c)} notation in Common Lisp. To further complicate
  3924. matters, Emacs has its own @code{#(} notation for
  3925. something entirely different---strings with properties.
  3926. @item
  3927. Characters are distinct from integers in Common Lisp. The notation
  3928. for character constants is also different: @code{#\A} in Common Lisp
  3929. where Emacs Lisp uses @code{?A}. Also, @code{string=} and
  3930. @code{string-equal} are synonyms in Emacs Lisp, whereas the latter is
  3931. case-insensitive in Common Lisp.
  3932. @item
  3933. Data types. Some Common Lisp data types do not exist in Emacs
  3934. Lisp. Rational numbers and complex numbers are not present,
  3935. nor are large integers (all integers are ``fixnums''). All
  3936. arrays are one-dimensional. There are no readtables or pathnames;
  3937. streams are a set of existing data types rather than a new data
  3938. type of their own. Hash tables, random-states, and packages
  3939. (obarrays) are built from Lisp vectors or lists rather than being
  3940. distinct types.
  3941. @item
  3942. The Common Lisp Object System (CLOS) is not implemented,
  3943. nor is the Common Lisp Condition System. However, the EIEIO package
  3944. (@pxref{Top, , Introduction, eieio, EIEIO}) does implement some
  3945. CLOS functionality.
  3946. @item
  3947. Common Lisp features that are completely redundant with Emacs
  3948. Lisp features of a different name generally have not been
  3949. implemented. For example, Common Lisp writes @code{defconstant}
  3950. where Emacs Lisp uses @code{defconst}. Similarly, @code{make-list}
  3951. takes its arguments in different ways in the two Lisps but does
  3952. exactly the same thing, so this package has not bothered to
  3953. implement a Common Lisp-style @code{make-list}.
  3954. @item
  3955. A few more notable Common Lisp features not included in this package:
  3956. @code{compiler-let}, @code{prog}, @code{ldb/dpb}, @code{cerror}.
  3957. @item
  3958. Recursion. While recursion works in Emacs Lisp just like it
  3959. does in Common Lisp, various details of the Emacs Lisp system
  3960. and compiler make recursion much less efficient than it is in
  3961. most Lisps. Some schools of thought prefer to use recursion
  3962. in Lisp over other techniques; they would sum a list of
  3963. numbers using something like
  3964. @example
  3965. (defun sum-list (list)
  3966. (if list
  3967. (+ (car list) (sum-list (cdr list)))
  3968. 0))
  3969. @end example
  3970. @noindent
  3971. where a more iteratively-minded programmer might write one of
  3972. these forms:
  3973. @example
  3974. (let ((total 0)) (dolist (x my-list) (incf total x)) total)
  3975. (loop for x in my-list sum x)
  3976. @end example
  3977. While this would be mainly a stylistic choice in most Common Lisps,
  3978. in Emacs Lisp you should be aware that the iterative forms are
  3979. much faster than recursion. Also, Lisp programmers will want to
  3980. note that the current Emacs Lisp compiler does not optimize tail
  3981. recursion.
  3982. @end itemize
  3983. @node Obsolete Features
  3984. @appendix Obsolete Features
  3985. This section describes some features of the package that are obsolete
  3986. and should not be used in new code. They are either only provided by
  3987. the old @file{cl.el} entry point, not by the newer @file{cl-lib.el};
  3988. or where versions with a @samp{cl-} prefix do exist they do not behave
  3989. in exactly the same way.
  3990. @menu
  3991. * Obsolete Lexical Binding:: An approximation of lexical binding.
  3992. * Obsolete Macros:: Obsolete macros.
  3993. * Obsolete Setf Customization:: Obsolete ways to customize setf.
  3994. @end menu
  3995. @node Obsolete Lexical Binding
  3996. @appendixsec Obsolete Lexical Binding
  3997. The following macros are extensions to Common Lisp, where all bindings
  3998. are lexical unless declared otherwise. These features are likewise
  3999. obsolete since the introduction of true lexical binding in Emacs 24.1.
  4000. @defmac lexical-let (bindings@dots{}) forms@dots{}
  4001. This form is exactly like @code{let} except that the bindings it
  4002. establishes are purely lexical.
  4003. @end defmac
  4004. @c FIXME remove this and refer to elisp manual.
  4005. @c Maybe merge some stuff from here to there?
  4006. @noindent
  4007. Lexical bindings are similar to local variables in a language like C:
  4008. Only the code physically within the body of the @code{lexical-let}
  4009. (after macro expansion) may refer to the bound variables.
  4010. @example
  4011. (setq a 5)
  4012. (defun foo (b) (+ a b))
  4013. (let ((a 2)) (foo a))
  4014. @result{} 4
  4015. (lexical-let ((a 2)) (foo a))
  4016. @result{} 7
  4017. @end example
  4018. @noindent
  4019. In this example, a regular @code{let} binding of @code{a} actually
  4020. makes a temporary change to the global variable @code{a}, so @code{foo}
  4021. is able to see the binding of @code{a} to 2. But @code{lexical-let}
  4022. actually creates a distinct local variable @code{a} for use within its
  4023. body, without any effect on the global variable of the same name.
  4024. The most important use of lexical bindings is to create @dfn{closures}.
  4025. A closure is a function object that refers to an outside lexical
  4026. variable (@pxref{Closures,,,elisp,GNU Emacs Lisp Reference Manual}).
  4027. For example:
  4028. @example
  4029. (defun make-adder (n)
  4030. (lexical-let ((n n))
  4031. (function (lambda (m) (+ n m)))))
  4032. (setq add17 (make-adder 17))
  4033. (funcall add17 4)
  4034. @result{} 21
  4035. @end example
  4036. @noindent
  4037. The call @code{(make-adder 17)} returns a function object which adds
  4038. 17 to its argument. If @code{let} had been used instead of
  4039. @code{lexical-let}, the function object would have referred to the
  4040. global @code{n}, which would have been bound to 17 only during the
  4041. call to @code{make-adder} itself.
  4042. @example
  4043. (defun make-counter ()
  4044. (lexical-let ((n 0))
  4045. (cl-function (lambda (&optional (m 1)) (cl-incf n m)))))
  4046. (setq count-1 (make-counter))
  4047. (funcall count-1 3)
  4048. @result{} 3
  4049. (funcall count-1 14)
  4050. @result{} 17
  4051. (setq count-2 (make-counter))
  4052. (funcall count-2 5)
  4053. @result{} 5
  4054. (funcall count-1 2)
  4055. @result{} 19
  4056. (funcall count-2)
  4057. @result{} 6
  4058. @end example
  4059. @noindent
  4060. Here we see that each call to @code{make-counter} creates a distinct
  4061. local variable @code{n}, which serves as a private counter for the
  4062. function object that is returned.
  4063. Closed-over lexical variables persist until the last reference to
  4064. them goes away, just like all other Lisp objects. For example,
  4065. @code{count-2} refers to a function object which refers to an
  4066. instance of the variable @code{n}; this is the only reference
  4067. to that variable, so after @code{(setq count-2 nil)} the garbage
  4068. collector would be able to delete this instance of @code{n}.
  4069. Of course, if a @code{lexical-let} does not actually create any
  4070. closures, then the lexical variables are free as soon as the
  4071. @code{lexical-let} returns.
  4072. Many closures are used only during the extent of the bindings they
  4073. refer to; these are known as ``downward funargs'' in Lisp parlance.
  4074. When a closure is used in this way, regular Emacs Lisp dynamic
  4075. bindings suffice and will be more efficient than @code{lexical-let}
  4076. closures:
  4077. @example
  4078. (defun add-to-list (x list)
  4079. (mapcar (lambda (y) (+ x y))) list)
  4080. (add-to-list 7 '(1 2 5))
  4081. @result{} (8 9 12)
  4082. @end example
  4083. @noindent
  4084. Since this lambda is only used while @code{x} is still bound,
  4085. it is not necessary to make a true closure out of it.
  4086. You can use @code{defun} or @code{flet} inside a @code{lexical-let}
  4087. to create a named closure. If several closures are created in the
  4088. body of a single @code{lexical-let}, they all close over the same
  4089. instance of the lexical variable.
  4090. @defmac lexical-let* (bindings@dots{}) forms@dots{}
  4091. This form is just like @code{lexical-let}, except that the bindings
  4092. are made sequentially in the manner of @code{let*}.
  4093. @end defmac
  4094. @node Obsolete Macros
  4095. @appendixsec Obsolete Macros
  4096. The following macros are obsolete, and are replaced by versions with
  4097. a @samp{cl-} prefix that do not behave in exactly the same way.
  4098. Consequently, the @file{cl.el} versions are not simply aliases to the
  4099. @file{cl-lib.el} versions.
  4100. @defmac flet (bindings@dots{}) forms@dots{}
  4101. This macro is replaced by @code{cl-flet} (@pxref{Function Bindings}),
  4102. which behaves the same way as Common Lisp's @code{flet}.
  4103. This @code{flet} takes the same arguments as @code{cl-flet}, but does
  4104. not behave in precisely the same way.
  4105. While @code{flet} in Common Lisp establishes a lexical function
  4106. binding, this @code{flet} makes a dynamic binding (it dates from a
  4107. time before Emacs had lexical binding). The result is
  4108. that @code{flet} affects indirect calls to a function as well as calls
  4109. directly inside the @code{flet} form itself.
  4110. This will even work on Emacs primitives, although note that some calls
  4111. to primitive functions internal to Emacs are made without going
  4112. through the symbol's function cell, and so will not be affected by
  4113. @code{flet}. For example,
  4114. @example
  4115. (flet ((message (&rest args) (push args saved-msgs)))
  4116. (do-something))
  4117. @end example
  4118. This code attempts to replace the built-in function @code{message}
  4119. with a function that simply saves the messages in a list rather
  4120. than displaying them. The original definition of @code{message}
  4121. will be restored after @code{do-something} exits. This code will
  4122. work fine on messages generated by other Lisp code, but messages
  4123. generated directly inside Emacs will not be caught since they make
  4124. direct C-language calls to the message routines rather than going
  4125. through the Lisp @code{message} function.
  4126. For those cases where the dynamic scoping of @code{flet} is desired,
  4127. @code{cl-flet} is clearly not a substitute. The most direct replacement would
  4128. be instead to use @code{cl-letf} to temporarily rebind @code{(symbol-function
  4129. '@var{fun})}. But in most cases, a better substitute is to use advice, such
  4130. as:
  4131. @example
  4132. (defvar my-fun-advice-enable nil)
  4133. (add-advice '@var{fun} :around
  4134. (lambda (orig &rest args)
  4135. (if my-fun-advice-enable (do-something)
  4136. (apply orig args))))
  4137. @end example
  4138. so that you can then replace the @code{flet} with a simple dynamically scoped
  4139. binding of @code{my-fun-advice-enable}.
  4140. @c Bug#411.
  4141. Note that many primitives (e.g., @code{+}) have special byte-compile handling.
  4142. Attempts to redefine such functions using @code{flet}, @code{cl-letf}, or
  4143. advice will fail when byte-compiled.
  4144. @c Or cl-flet.
  4145. @c In such cases, use @code{labels} instead.
  4146. @end defmac
  4147. @defmac labels (bindings@dots{}) forms@dots{}
  4148. This macro is replaced by @code{cl-labels} (@pxref{Function Bindings}),
  4149. which behaves the same way as Common Lisp's @code{labels}.
  4150. This @code{labels} takes the same arguments as @code{cl-labels}, but
  4151. does not behave in precisely the same way.
  4152. This version of @code{labels} uses the obsolete @code{lexical-let}
  4153. form (@pxref{Obsolete Lexical Binding}), rather than the true
  4154. lexical binding that @code{cl-labels} uses.
  4155. @end defmac
  4156. @node Obsolete Setf Customization
  4157. @appendixsec Obsolete Ways to Customize Setf
  4158. Common Lisp defines three macros, @code{define-modify-macro},
  4159. @code{defsetf}, and @code{define-setf-method}, that allow the
  4160. user to extend generalized variables in various ways.
  4161. In Emacs, these are obsolete, replaced by various features of
  4162. @file{gv.el} in Emacs 24.3.
  4163. @xref{Adding Generalized Variables,,,elisp,GNU Emacs Lisp Reference Manual}.
  4164. @defmac define-modify-macro name arglist function [doc-string]
  4165. This macro defines a ``read-modify-write'' macro similar to
  4166. @code{cl-incf} and @code{cl-decf}. You can replace this macro
  4167. with @code{gv-letplace}.
  4168. The macro @var{name} is defined to take a @var{place} argument
  4169. followed by additional arguments described by @var{arglist}. The call
  4170. @example
  4171. (@var{name} @var{place} @var{args}@dots{})
  4172. @end example
  4173. @noindent
  4174. will be expanded to
  4175. @example
  4176. (cl-callf @var{func} @var{place} @var{args}@dots{})
  4177. @end example
  4178. @noindent
  4179. which in turn is roughly equivalent to
  4180. @example
  4181. (setf @var{place} (@var{func} @var{place} @var{args}@dots{}))
  4182. @end example
  4183. For example:
  4184. @example
  4185. (define-modify-macro incf (&optional (n 1)) +)
  4186. (define-modify-macro concatf (&rest args) concat)
  4187. @end example
  4188. Note that @code{&key} is not allowed in @var{arglist}, but
  4189. @code{&rest} is sufficient to pass keywords on to the function.
  4190. Most of the modify macros defined by Common Lisp do not exactly
  4191. follow the pattern of @code{define-modify-macro}. For example,
  4192. @code{push} takes its arguments in the wrong order, and @code{pop}
  4193. is completely irregular.
  4194. The above @code{incf} example could be written using
  4195. @code{gv-letplace} as:
  4196. @example
  4197. (defmacro incf (place &optional n)
  4198. (gv-letplace (getter setter) place
  4199. (macroexp-let2 nil v (or n 1)
  4200. (funcall setter `(+ ,v ,getter)))))
  4201. @end example
  4202. @ignore
  4203. (defmacro concatf (place &rest args)
  4204. (gv-letplace (getter setter) place
  4205. (macroexp-let2 nil v (mapconcat 'identity args "")
  4206. (funcall setter `(concat ,getter ,v)))))
  4207. @end ignore
  4208. @end defmac
  4209. @defmac defsetf access-fn update-fn
  4210. This is the simpler of two @code{defsetf} forms, and is
  4211. replaced by @code{gv-define-simple-setter}.
  4212. With @var{access-fn} the name of a function that accesses a place,
  4213. this declares @var{update-fn} to be the corresponding store function.
  4214. From now on,
  4215. @example
  4216. (setf (@var{access-fn} @var{arg1} @var{arg2} @var{arg3}) @var{value})
  4217. @end example
  4218. @noindent
  4219. will be expanded to
  4220. @example
  4221. (@var{update-fn} @var{arg1} @var{arg2} @var{arg3} @var{value})
  4222. @end example
  4223. @noindent
  4224. The @var{update-fn} is required to be either a true function, or
  4225. a macro that evaluates its arguments in a function-like way. Also,
  4226. the @var{update-fn} is expected to return @var{value} as its result.
  4227. Otherwise, the above expansion would not obey the rules for the way
  4228. @code{setf} is supposed to behave.
  4229. As a special (non-Common-Lisp) extension, a third argument of @code{t}
  4230. to @code{defsetf} says that the return value of @code{update-fn} is
  4231. not suitable, so that the above @code{setf} should be expanded to
  4232. something more like
  4233. @example
  4234. (let ((temp @var{value}))
  4235. (@var{update-fn} @var{arg1} @var{arg2} @var{arg3} temp)
  4236. temp)
  4237. @end example
  4238. Some examples are:
  4239. @example
  4240. (defsetf car setcar)
  4241. (defsetf buffer-name rename-buffer t)
  4242. @end example
  4243. These translate directly to @code{gv-define-simple-setter}:
  4244. @example
  4245. (gv-define-simple-setter car setcar)
  4246. (gv-define-simple-setter buffer-name rename-buffer t)
  4247. @end example
  4248. @end defmac
  4249. @defmac defsetf access-fn arglist (store-var) forms@dots{}
  4250. This is the second, more complex, form of @code{defsetf}.
  4251. It can be replaced by @code{gv-define-setter}.
  4252. This form of @code{defsetf} is rather like @code{defmacro} except for
  4253. the additional @var{store-var} argument. The @var{forms} should
  4254. return a Lisp form that stores the value of @var{store-var} into the
  4255. generalized variable formed by a call to @var{access-fn} with
  4256. arguments described by @var{arglist}. The @var{forms} may begin with
  4257. a string which documents the @code{setf} method (analogous to the doc
  4258. string that appears at the front of a function).
  4259. For example, the simple form of @code{defsetf} is shorthand for
  4260. @example
  4261. (defsetf @var{access-fn} (&rest args) (store)
  4262. (append '(@var{update-fn}) args (list store)))
  4263. @end example
  4264. The Lisp form that is returned can access the arguments from
  4265. @var{arglist} and @var{store-var} in an unrestricted fashion;
  4266. macros like @code{cl-incf} that invoke this
  4267. setf-method will insert temporary variables as needed to make
  4268. sure the apparent order of evaluation is preserved.
  4269. Another standard example:
  4270. @example
  4271. (defsetf nth (n x) (store)
  4272. `(setcar (nthcdr ,n ,x) ,store))
  4273. @end example
  4274. You could write this using @code{gv-define-setter} as:
  4275. @example
  4276. (gv-define-setter nth (store n x)
  4277. `(setcar (nthcdr ,n ,x) ,store))
  4278. @end example
  4279. @end defmac
  4280. @defmac define-setf-method access-fn arglist forms@dots{}
  4281. This is the most general way to create new place forms. You can
  4282. replace this by @code{gv-define-setter} or @code{gv-define-expander}.
  4283. When a @code{setf} to @var{access-fn} with arguments described by
  4284. @var{arglist} is expanded, the @var{forms} are evaluated and must
  4285. return a list of five items:
  4286. @enumerate
  4287. @item
  4288. A list of @dfn{temporary variables}.
  4289. @item
  4290. A list of @dfn{value forms} corresponding to the temporary variables
  4291. above. The temporary variables will be bound to these value forms
  4292. as the first step of any operation on the generalized variable.
  4293. @item
  4294. A list of exactly one @dfn{store variable} (generally obtained
  4295. from a call to @code{gensym}).
  4296. @item
  4297. A Lisp form that stores the contents of the store variable into
  4298. the generalized variable, assuming the temporaries have been
  4299. bound as described above.
  4300. @item
  4301. A Lisp form that accesses the contents of the generalized variable,
  4302. assuming the temporaries have been bound.
  4303. @end enumerate
  4304. This is exactly like the Common Lisp macro of the same name,
  4305. except that the method returns a list of five values rather
  4306. than the five values themselves, since Emacs Lisp does not
  4307. support Common Lisp's notion of multiple return values.
  4308. (Note that the @code{setf} implementation provided by @file{gv.el}
  4309. does not use this five item format. Its use here is only for
  4310. backwards compatibility.)
  4311. Once again, the @var{forms} may begin with a documentation string.
  4312. A setf-method should be maximally conservative with regard to
  4313. temporary variables. In the setf-methods generated by
  4314. @code{defsetf}, the second return value is simply the list of
  4315. arguments in the place form, and the first return value is a
  4316. list of a corresponding number of temporary variables generated
  4317. @c FIXME I don't think this is true anymore.
  4318. by @code{cl-gensym}. Macros like @code{cl-incf} that
  4319. use this setf-method will optimize away most temporaries that
  4320. turn out to be unnecessary, so there is little reason for the
  4321. setf-method itself to optimize.
  4322. @end defmac
  4323. @c Removed in Emacs 24.3, not possible to make a compatible replacement.
  4324. @ignore
  4325. @defun get-setf-method place &optional env
  4326. This function returns the setf-method for @var{place}, by
  4327. invoking the definition previously recorded by @code{defsetf}
  4328. or @code{define-setf-method}. The result is a list of five
  4329. values as described above. You can use this function to build
  4330. your own @code{cl-incf}-like modify macros.
  4331. The argument @var{env} specifies the ``environment'' to be
  4332. passed on to @code{macroexpand} if @code{get-setf-method} should
  4333. need to expand a macro in @var{place}. It should come from
  4334. an @code{&environment} argument to the macro or setf-method
  4335. that called @code{get-setf-method}.
  4336. @end defun
  4337. @end ignore
  4338. @node GNU Free Documentation License
  4339. @appendix GNU Free Documentation License
  4340. @include doclicense.texi
  4341. @node Function Index
  4342. @unnumbered Function Index
  4343. @printindex fn
  4344. @node Variable Index
  4345. @unnumbered Variable Index
  4346. @printindex vr
  4347. @node Concept Index
  4348. @unnumbered Concept Index
  4349. @printindex cp
  4350. @bye