2010-11-04 6 views
5

Quelle version/dialecte/implémentation de LISP est-ce prévu pour fonctionner? (Je comprends que le livre est écrit en LISP commun (comme spécifié dans l'introduction) et qu'il est antérieur à la norme CL 1994).Quel dialecte de LISP est écrit «Paradigmes de programmation d'intelligence artificielle»?


Diviser la question en deux pour la rendre plus claire.

+0

Cela s'appelle "Paradigmes de la programmation AI", pas "Principes ..." – Xach

+3

Pouvez-vous montrer la fonction que vous êtes en train de lire? – Ken

+0

De la première ligne du lien, vous avez indiqué: ';;;; - * - Mode: Lisp; Syntaxe: Common-Lisp - * - ' – harto

Répondre

3

Si nous regardons auxfns.lisp trouvé sur web page for the book de Peter Norvig, il y a ce bit

(eval-when (eval compile load) 
    ;; Make it ok to place a function definition on a built-in LISP symbol. 
    #+(or Allegro EXCL) 
    (dolist (pkg '(excl common-lisp common-lisp-user)) 
    (setf (excl:package-definition-lock (find-package pkg)) nil)) 

    ;; Don't warn if a function is defined in multiple files -- 
    ;; this happens often since we refine several programs. 
    #+Lispworks 
    (setq *PACKAGES-FOR-WARN-ON-REDEFINITION* nil) 

    #+LCL 
    (compiler-options :warnings nil) 
) 

qui suggère son supposé travailler à Franz Allegro, Lisp Lucid, ou Lispworks

7

Ce ne sont pas des fonctions. Ce sont des liaisons variables. Tout ce qui apparaît comme la première chose dans un formulaire n'est pas le nom d'une fonction; la forme enveloppante peut introduire une signification spéciale aux formes internes. C'est le cas avec, par exemple, let:

(let ((action 42) 
     (result 51)) 
    (+ action result)) 

Ni action ni result noms d'une fonction dans cet exemple.

+2

Ces * sont * des liaisons. Ils sont introduits par la liste lambda. – Xach

3

Le dialecte de Lisp est appelé 'Common Lisp'. Le livre est écrit en Common Lisp relativement portable.

Questions connexes