2010-11-04 11 views
5

Jaka wersja/dialekt/implementacja LISP-a ma działać?Który dialekt LISP jest napisany w "Paradygmatach programowania sztucznej inteligencji"?

(Rozumiem, że książka jest napisana we wspólnym LISP-ie (jak podano we wprowadzeniu) i że poprzedza standard CL 1994).


Podziel pytanie na dwie części, aby było jaśniejsze.

+0

To się nazywa "Paradygmaty programowania AI", a nie "Zasady ..." – Xach

+3

Czy możesz pokazać funkcję, którą czytasz? – Ken

+0

Od pierwszej linii podanego linku: ';;;; - * - Tryb: Lisp; Składnia: Common-Lisp - * - ' – harto

Odpowiedz

3

Jeśli spojrzymy na auxfns.lisp znalezionego na Petera Norvig za web page for the book, tam ten 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) 
) 

co sugeruje jej ma działać w Franz Allegro, Lucid Lisp lub Lispworks

7

To nie są funkcje. To są zmienne wiązania. Nie wszystko, co pojawia się jako pierwsza rzecz w formie, to nazwa funkcji; forma zamykająca może wprowadzić specjalne znaczenie do formularzy wewnętrznych. Tak jest w przypadku np. let:

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

Ani action ani result nazwy funkcji w tym przykładzie.

+2

Te * są * wiązaniami. Zostały wprowadzone przez listę lambda. – Xach

3

Dialekt Lisp nazywa się "Common Lisp". Książka jest napisana stosunkowo przenośnym Common Lisp.

Powiązane problemy