/paip-lisp

Lisp code for the textbook "Paradigms of Artificial Intelligence Programming"

Primary LanguageCommon LispMIT LicenseMIT

paip-lisp

Paradigms of Artificial Intelligence Programming

PAIP

This is the repository for the book Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig (1992). Here you'll find:

  • A directory of all the Lisp code from the book.
  • A pdf of the book, split into two parts (because GitHub can't handle big files) covering Chapters 1-14 (PAIP-part1.pdf) and 15-25 (PAIP-part2.pdf). The copyright has recently reverted to me, and I choose to share it under MIT license.
  • A rough txt export, from the pdf, PAIP.txt, containing many errors.

As seen on TV. See also: errata, comments, preface, retrospective.

Running the Code

There is no single "application" to run. Rather, there is a collection of source code files, duplicating the code in the book. You can read and/or run whatever you like. Lisp is an interactive language, and you will need to interact with the code to get benefit from it. Some hints:

  • You will need a Common Lisp interpreter/compiler/environment. Here's a discussion of the options.
  • You will always need (load "auxfns.lisp").
  • You will need (requires "file"), for the various instances of file that you want to use. (If requires does not work properly on your system you may have to alter its definition, in auxfns.lisp.
  • The function do-examples, which takes as an argument either :all or a chapter number or a list of chapter numbers, can be used to see examples of the use of various functions. For example, (do-examples 1) shows the examples from chapter 1. Access this by doing (requires "examples").

The Files

The index below gives the chapter in the book, file name, and short description for each file.

CH Filename Description
- examples.lisp A list of example inputs taken from the book
- tutor.lisp An interpreter for running the examples
- auxfns.lisp Auxiliary functions; load this before anything else
1 intro.lisp A few simple definitions
2 simple.lisp Random sentence generator (two versions)
3 overview.lisp 14 versions of LENGTH and other examples
4 gps1.lisp Simple version of General Problem Solver
4 gps.lisp Final version of General Problem Solver
5 eliza1.lisp Basic version of Eliza program
5 eliza.lisp Eliza with more rules; different reader
6 patmatch.lisp Pattern Matching Utility
6 eliza-pm.lisp Version of Eliza using utilities
6 search.lisp Search Utility
6 gps-srch.lisp Version of GPS using the search utility
7 student.lisp The Student Program
8 macsyma.lisp The Macsyma Program
8 macsymar.lisp Simplification and integration rules for Macsyma
9-10   (functions from these chapters are in auxfns.lisp)
11 unify.lisp Unification functions
11 prolog1.lisp First version of Prolog interpreter
11 prolog.lisp Final version of Prolog interpreter
12 prologc1.lisp First version of Prolog compiler
12 prologc2.lisp Second version of Prolog compiler
12 prologc.lisp Final version of Prolog compiler
12 prologcp.lisp Primitives for Prolog compiler
13 clos.lisp Some object-oriented and CLOS code
14 krep1.lisp Knowledge Representation code: first version
14 krep2.lisp Knowledge Representation code with conjunctions
14 krep.lisp Final KR code: worlds and attached functions
15 cmacsyma.lisp Efficient Macsyma with canonical form
16 mycin.lisp The Emycin expert system shell
16 mycin-r.lisp Some rules for a medical application of emycin
17 waltz.lisp A Line-Labeling program using the Waltz algorithm
18 othello.lisp The Othello playing program and some strategies
18 othello2.lisp Additional strategies for Othello
18 edge-tab.lisp Edge table for Iago strategy
19 syntax1.lisp Syntactic Parser
19 syntax2.lisp Syntactic Parser with semantics
19 syntax3.lisp Syntactic Parser with semantics and preferences
20 unifgram.lisp Unification Parser
21 grammar.lisp Comprehensive grammar of English
21 lexicon.lisp Sample Lexicon of English
22 interp1.lisp Scheme interpreter, including version with macros
22 interp2.lisp A tail recursive Scheme interpreter
22 interp3.lisp A Scheme interpreter that handles call/cc
23 compile1.lisp Simple Scheme compiler
23 compile2.lisp Compiler with tail recursion and primitives
23 compile3.lisp Compiler with peephole optimizer
23 compopt.lisp Peephole optimizers for compile3.lisp


Peter Norvig