links: common lisp resources on the web
TRANSCRIPT
i n t e l l i g e n c e • Fa l l 2 0 0 1 21
AI hasrelied onL i s p
almost since theinception of thefield. Other lan-guages (e.g. Java[1]) may providelarger libraries ofreusable code,but unlike Lisplibraries, theirfunctionality isnot necessarilytailored to theneeds of AIdevelopers. Manyof the buildingblocks of an AIsystem, large orsmall, can be retrieved from the Web, givingLisp developers a significant boost in theirability to focus on problem specifics and toprototype solutions.
If we need, for example,✶ basic search algorithms [2],✶ regular expression processing [3],✶ theorem proving [4],✶ constraint satisfaction or logic
programming [5],✶ machine learning algorithms [6],✶ planning algorithms [7],✶ cross-platform user interfaces [8],✶ statistical analysis and instrumentation
[9],or any number of other functionality-
enhancing toolkits, they are all available overthe Web.
In this column we take a brief tour of Webresources devoted to Common Lisp.(Common Lisp is an official ANSI Standardlanguage, as of 1994, the first object-orientedlanguage specification to be so approved, andis now the most widely used general-purpose
dialect of the Lispfamily of lan-guages.) Much ofthe informationpresented here canalso be found onthe Web site for theAssociation of LispUsers (ALU) [10].
Where should Istart withLisp? One good place forinformation is theALU Web site[10], which is arich compendiumof informationabout the lan-
guage: reference materials, programming tools,implementations, history, and more. TheUsenet group comp.lang.lisp is a gathering ofknowledgeable and helpful experts, some ofwhom were closely involved in the develop-ment of Common Lisp. The Frequently AskedQuestions list for comp.lang.lisp [11] is some-what outdated with respect to software offer-ings and implementations, but also gives usefulgeneral information.
Is Lisp programming difficult? Perhaps surprisingly, Lisp programming isnot difficult; for example, Logo is a dialectof Lisp that has been used to teach childrento program [12]. Experienced programmerssometimes face more difficult hurdles in“unlearning’’ programming practices appro-priate for other languages, to take advantageof the full power of Lisp. David Lamkins haswritten an online tutorial on programmingin Common Lisp that should be accessibleto programmers at all levels of experi-ence[13].
Robert St. Amant and R. Michael YoungDepartment of ComputerScienceNorth Carolina StateUniversity [email protected]
links
Common Lisp Resources on the Web
© Ingo Fast/Artville LLC.
Are there public domain versions ofCommon Lisp? What are the commer-cial offerings? The ALU Web site lists over fifty differentCommon Lisp implementations of varyingcompliance with the ANSI standard [14]. Forany of the most common desktop platformstoday (Windows, Macintosh, Unix, Linux),different commercial and free implementa-tions exist. A sampling from the commercialsystems includes Allegro CL, from Franz [15],Lispworks, from Xanalys (formerly fromHarlequin) [16], and MCL, from Digitool[17]. Free trial versions (with some built-inlimitations) of these implementations areavailable, or one can try the public domainsystems, CLISP [18] or CMUCL [19].Significant AI systems have been built in orported to all of these implementations.
Hasn’t Lisp been superseded by newerlanguages? Far from it. Many emerging features of otherprogramming languages (e.g., garbage collec-tion, dynamic typing, objects, classes, meth-ods, namespaces) have been part of CommonLisp or its ancestor languages for years, if notdecades. The maturity of the language has adownside, however; some early limitations ofLisp may still be associated with the modernlanguage, in the minds of non-Lisp aficiona-dos. For example, one might hear that Lisp isan interpreted language, that it lacks supportfor core data types, that it is slow, that all theparentheses get in the way of reading Lisp pro-grams, and so forth.
All myths [20]. All commercial implemen-tations now have compilers that can providefast, small deliverables. The core language hasextensive support for numerical processing,bit manipulation, string, array, and sequenceprocessing, hash tables, and (of course) listsand symbols. Today’s Common Lisp imple-mentations are as powerful as any other mod-ern language with respect to basicfunctionality, and in many ways offer moreflexibility: interactive debugging during pro-gram execution, clean macro definition facili-ties, and the ability to be tailored to differentprogramming paradigms.
Where can I find examples of CommonLisp programs? All of the programs and tools referenced earli-er are available as source code; many of thesesystems act as examples of good programmingstyle. For more dramatic examples ofCommon Lisp being used in AI research, con-sider these:
✶ Harold Cohen has made the systemAaron available as an executable file[21]. Aaron is a program that createsart; Cohen has devoted the past thir-ty years to Aaron’s development,exploring questions related to thepotential creativity of computers.Aaron is implemented in Allegro CL,and, in a press release, Cohen creditsthe degree of abstraction made possi-ble by the language for the success ofthe program.
✶ The ACT-R theory of cognition is John Anderson’s approach to a unifiedcognitive architecture [22]. Well over200 papers and books have been pub-lished on ACT-R, describing its use indomains that include visual process-ing, spatial reasoning, language pro-cessing, scientific discovery, evendriving behavior.
✶ The Common Lisp Hypermedia Serverwas developed as part of an intelligentnetworking project, and was used for anumber of applications, including theWhite House Electronic PublicationsSystem [23].
Finally, Common Lisp has been used indomains outside AI, with high-profile results.
✶ Paul Graham used Lisp to writeViaweb Store, which, as Yahoo! Store,is possibly the most popular singlepiece of software for e-commerce, run-ning about 14,000 stores [24].
✶ The travel site Orbitz, founded bysome of the largest airline companies inthe United States, is based onCommon Lisp [25].
References1. Ali, Syed, and McRoy, Susan, 2000. Links: Java
resource for artificial intelligence. intelligence
22 Fa l l 2 0 0 1 • i n t e l l i g e n c e
magazine, 11(2), pp. 15-16
2. www.norvig.com/paip/
3. www.cs.rice.edu/~dorai/pregexp/pregexp.html
4. http://logic.stanford.edu/sharing/programs/dtp/
5. www.cis.upenn.edu/~screamer-tools/
6. www.ai.univie.ac.at/oefai/ml/ml-resources.html
7. St. Amant, Robert, and Young, R. Michael, 2001.
Links: AI Planning resources on the Web. intelligence
magazine, 12(1):17-19.
8. www.cs.cmu.edu/Web/Groups/garnet/garnet-
home.html
9. http://eksl.cs.umass.edu/research/clip-clasp-
overview.html
10. www.lisp.org
11. www.faqs.org/faqs/lisp-faq/
12. http://el.www.media.mit.edu/groups/logo-foundation/
13. Lamkins, David B. 2001. Successful Lisp: How to
PERMISSION TO MAKE DIGITAL OR
HARD COPIES OF ALL OR PART OF THIS
WORK FOR PERSONAL OR CLASSROOM
USE IS GRANTED WITHOUT FEE PRO-
VIDED THAT COPIES ARE NOT MADE
OR DISTRIBUTED FOR PROFIT OR COM-
MERCIAL ADVANTAGE AND THAT
COPIES BEAR THIS NOTICE AND THE
FULL CITATION ON THE FIRST PAGE.
TO COPY OTHERWISE, TO REPUBLISH,
TO POST ON SERVERS OR TO REDIS-
TRIBUTE TO LISTS, REQUIRES PRIOR
SPECIFIC PERMISSION AND/OR A FEE.
© ACM 1523-8822 01/0900 $5.00
i n t e l l i g e n c e • Fa l l 2 0 0 1 23
linksUnderstand and Use Common Lisp. http://psg.com/~
dlamkins/sl/cover.html
14. www.alu.org/table/systems.htm
15. www.franz.com
16. www.xanalys.com/software_tools/products/
17. www.digitool.com
18. http://clisp.sourceforge.net/
19. www.cons.org/cmucl/
20. www.xanalys.com/software_tools/products/
myths_and_legends.html
21. www.kurzweilcyberart.com
22. http://act.psy.cmu.edu/ACT/
23. www.ai.mit.edu/projects/iiip/doc/cl-http/
home-page.html
24. www.paulgraham.com/paulgraham/avg.html
25. www.franz.com/success/customer_apps/data_
mining/itastory.php3
Associat ion for Comput ing Machinery
The F i rs t Soc iety in Comput ing
Transactions on Computational Logic is the latest addition to ACM’s
Transactions Series and is devoted to the research concerned with all uses of
logic in Computer Science. ◆ With its great tradition, logic continues to play an
important role in Computer Science and permeates many of its areas including:
artificial intelligence, computational complexity, database systems, and pro-
gramming languages. For more information on areas covered in the journal,
please visit www.acm.org/tocl/. ◆ The high-quality of the submissions to TOCL
are sure to make this new ACM journal the standard reference in the field.
Subscribe Today!
ACM IS PLEASED TO ANNOUNCE
A NEW PUBLICATION!
w w w. a c m . o r g / t o c l /
TO PLACE AN ORDERPRODUCT INFORMATION
ISSN: 1529-3785Order Code: (135)Price: $35 Professional Member
$30 Student Member$140 Non-Member$13 Air Service (for residents
outside North America only)
Contact ACM Member ServicesPhone: 1.800.342.6626 (U.S. and Canada)
+1.212.626.0500 (Global)
Fax: +1.212.944.1318(Hours: 8:30am—4:30pm, Eastern Time)
Email: [email protected]: ACM Member Services
PO Box 11414New York, NY 10286-1414 USA
AD22