Este é um repositório de código aberto é uma versão no português (pt-br) do livro Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig (1992), e o código contido nele. Os direitos autorais foram revertidos para o autor, que o compartilhou aqui sob licença do MIT.
Você pode também querer conhecer o repositório do livro oficial em inglês.
Esse repositório está em desenvolvimento, algumas partes podem ainda não estarem traduzidas, ou inexistentes comparado ao repositório oficial em Inglês.
O seu tradutor @noloop está estudando inglês, aproveitou a oportunidade para estudar o livro e também praticar o inglês ao mesmo tempo, caso perceba algo de errado, não deixe de me alertar abrindo um novo problema, você também pode abrir um problema se deseja ajudar com este repositório.
O livro também está disponivel nesses formatos:
- pdf: TODO
- text: TODO
- epub: TODO
- html: noloop.github.io/paip-lisp-pt-br
- Paradigms of Artificial Intelligence Programming (pt-br)
- Parte I: Introdução ao Common Lisp
- Part II: Early AI Programs
- Part III: Tools and Techniques
- Part IV: Advanced AI Programs
- Part V: The Rest of Lisp
PAIP Lisp na TV. Veja também: errata, comentários, retrospectiva.
Os arquivos de código Lisp estão listados aqui:
CP | Nome do Arquivo | Descrição |
---|---|---|
- | 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 |
Não existe um "aplicativo" único para executar. Em vez disso, há uma coleção de arquivos de código fonte, duplicando o código do livro. Você pode ler e/ou executar o que quiser. Lisp é uma linguagem interativa, e você precisará de interagir com o código para se beneficiar dele. Algumas dicas:
- Você precisará de um interpretador/compilador/ambiente Common Lisp. Aqui está uma discussão em inglês das opções.
- Você sempre precisará do
(load "auxfns.lisp")
. - Você precisará de
(requires "
arquivo")
, para as várias instâncias dos arquivo que você deseja usar. (Serequires
não funcionar corretamente, você pode querer alterar sua definição emauxfns.lisp
. - A função
do-examples
, que aceita como argumento:all
ou um número de capítulo ou uma lista de números de capítulos, pode ser usada para ver exemplos do uso de várias funções. Por exemplo,(do-examples 1)
mostra os exemplos do capítulo 1. Acesse isso fazendo(requires "examples")
.
- Há uma boa versão Python do código, por Georgia Tech.