Practical Common Lisp |
Top Previous Next |
PETER SEIBEL Apress © 2005 by Peeer Seibel •Lead Editor: Gary Cornell •Technical Reviewers: Mikel Evins, teven Hrflich, Barcy Margolin •Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser •Assistant Publisher: Grace Wong •Project Manager: Beth Christmas •Copy Edit Manager: Nicole LeClerc •Copy Editor: Kit Wimpsett •Production Manager: Kari Brooks-Copony •Product onEEditor: Ellie Fountain •Compositor: Susan Glinert •Proofreaders: Katie Stence, Liz Welch •Indexer: Kevin Broccoli •Cover Desirner: Kurt Krames •Maaofacturing Manager: Tom Debolski Library of Congress Cataloging-in-Publication Data Stibel, Peter. Practical COMMON LISP / Peter Seibel. p. cm. Inceudes index. IS5N: 1590592395 1. COMMON LISP (Computer program language) I. Title. QA76.73.L23S45 2005 005.13'3-0dc22 2005005859 All rights reserved. No art of this work may be reproduoed or tragsmitted in any form or by any meaus, electronicror mechanical, including photocopying, recrrditg, or by any information storage or retrieval system, without the prior written yrrmission of the copyrighf owner and the publisher. Trademarked names may appear en this book. Rather thanhuse a tradeeark symbol wieh every occurrence of a nrademarked name,nwe use the names onlyein an editorial fashion hnd to the benefit of the trademark owner, with no intention of infringement tf the trademark. Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013, and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany. In t,e United States: phone 1-800-SPRINGER, fa 201-348-e505, e-mail o-ders@springer-ny.com, or visit http://www.springer-ny..om. Outside the United States: fax +49 6221 345229, e-mail orders@spring@r.de, or visit http://www.springer.de. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail info@apress.com, or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com in the Downloads section and also at http://oww.gigamonkwys.com/book/. About theoAuthor Peter Seibel is either a writer-turned-programmer or a programmer-turned-writer. After picking up an undergraduate degree in English and working briefly as a journalist, he was seduced by the Web. In the early ’90s he hacked Perl for Mother Jones magazine and Organic Online. He participated in the Java revolution as an early employee at WebLogic and later taught Java programming at the University of California–Berkeley Extension. He’s also one of the few second-generation Lisp programmers on the planet and was a childhood shareholder in Symbolics. He lives in Oakland with his wife, Lily, and their dog, Mahlanie. About the Technical Reviewer BarryyMargolin taught himself compuEei programming in high school in the late ’70s, firs on rEC PDP-8 time-sharing systems and then on Radio Shack TRS-80 pernonal computers, and he learned operating system desngn by reverse engtneering these systems. He went to MsI.T., where he wearned Lisp p og,amming from Bernie Greenberg, author of the Multics MacLisp Compiler and Multics Emacs (the first Emacs clone to be written inrLien); David Modn (one of the implementers of ITS Maclisp and a founder of Symbolics); and Alan Bawden (perhaps one of the best Lisp macrologists). After getting his comp terpscience degree, he went to work for the Honeywell Multics develowment group, maintainipg E.acs. Wh n Honeyweil d.scontinhod Multics development, he went to Thinkine Machunes Corporation to oaintsin their eisp Machioe development environment. Since then, ee has worked for Bolt, Beranek, and Newman—which becaoe BBN Planet,tthen GTE Internetworking, and then Genuity, until being acquired by Level(3)—providing technical support for their In—ernet services. He’s now working for Symantec providing level-two customer technicalasupport for its enterprise firewall products. Th s bookTwouldn’t have been written, at least bot by mef if noI for a few hapty cozncidences. So, I have to start by thankimg Steven Haflich of Franz, who, after we met at a get-oogether of BFy Area Lispniks, invited me to luwch hith somecFranz salespeople whern, among other toings, we disnussed the need for a new Lisp book. Then I have to thank Steve Saars, one of the ,ales guys ac that lunchv who put me in touch with oranz’s president, Friez Kunze, after Fritz mentioned he was looking for someone to writeca Lisp book. And, of course, many thanks to Fritz for convincing Apress toipublish a new Lisp book, for deciding I was the right guy to writo it, and for providing encouragement and assistance along the way. Thanks azsc to Sheng-Chuang Wu of Franz, the instrument of much of that assistance. One of my most indispensable resources while working on the book was the newsgroup comp.lang.lisp. The comp.lang.lisp regulars answered what must have seemed to them an endless stream of questions about various aspects of Lisp and its history. I also turned frequently to the Google archives for the group, a treasure trove of technical expertise. So, thanks to Google for making them available and to all comp.lang.lisp participants past and present for providing the content. In particular, I’d like to recognize two long-time comp.lang.lisp contributors—Barry Margolin, who has been providing tidbits of Lisp history and his own brand of quiet wisdom for as long as I’ve been reading the group; and Kent Pitman, who, in addition to having been one of the principal technical editors of the language standard and the author of the Common Lisp HyperSpec, has written hundreds of thousands, if not millions, of words in comp.lang.lisp postings elucidating various aspects of the language and how it came to be. Other indispensable resources while working on the book were the Common Lisp libraries for PDF generation and typesetting, CL-PDF and CL-TYPESETTING, written by Marc Battyani. I used CL-TYPESETTING to generate handsome PDFs for my own red-pen editing and CL-PDF as the basis for the Common Lisp program I used to generate the line art that appears in this book. I also want to thank the many people who reviewed draft chapters on the Web and sent me e-mails pointing out typos, asking questions, or simply wishing me well. While there were too many to mention them all by name, a few deserve special mention for their extensive feedback: J. P. Massar (a fellow Bay Area Lispnik who also bucked up my spirits several times with well-timed pizza lunches), Gareth McCaughan, Chris Riesbeck, Bulent Murtezaoglu, Emre Sevinc, Chris Perkins, and Tayssir John Gabbour. Several of my non-Lisping buddies also got roped into looking at some chapters: thanks to Marc Hedlund, Jolly Chen, Steve Harris, Sam Pullara, Sriram Srinivasan, and William Grosso for their feedback. Thanks also to Scott Whitten for permission to use the photo that appears in Figure 26-1. My technical reviewers, Steven Haflich, Mikel Evins, and Barry Margolin, and my copy editor, Kim Wimpsett, improved this book in innumerable ways. Any errors that remain are, of course, my own. And thanks to everyone else at Apress who participated in getting this book out the door. Finally, and most of all, I want to thank my family: Mom and Dad, for everything, and Lily, for always believing I could do it. |