PC-LISP - PC-LISP
PC-LISP je implementace Franz Lisp dialekt Peter Ashwood-Smith.
Verze 2.11 byla vydána 15. května 1986. Aktuální verzi lze stáhnout z níže uvedeného externího odkazu.
V současné době je PC-LISP portován na 32 a 64bitové systémy Linux, Mac a Windows.
Všimněte si, že dialekt Franze LISP byl bezprostředním a přenosným nástupcem SVÉ verze Maclisp a je možná nejbližší věc k LISP v Steven Levy rezervovat Hackeři jak je praktický provoz. PC-LISP funguje dobře v emulátorech DOS a v moderních verzích Windows. Protože PC-LISP implementuje Franze LISP, je dynamicky zaměřeným předchůdcem moderní Společný Lisp. Jedná se tedy o historicky důležitou implementaci.
Příklad
V relaci běží následující kód, který ukazuje dynamický rozsah ve Franz LISP. PC-LISP neimplementuje nechat
speciální forma Emacs Lisp poskytuje místní proměnné. Místo toho jsou všechny proměnné tím, co ALGOL -založený jazyk by nazval „globální“. První dialekt Lispu, který obsahuje pravidla rozsahu ALGOL (tzv lexikální obor ) byl Systém Ačkoliv Společný Lisp jazyk také přidal tuto funkci.
;; Demonstrace dynamického rozsahu;; Toto je „globální“ proměnná(setq myglobální „toto je moje globální proměnná“);; Další globální proměnná(setq váš globální „toto je moje globální proměnná“);; funkce, která tiskne symboly(defun dělej něco (těžit vaše) (princ " * Můj je - ") (princ těžit) (princ „ n“) (princ „* Tvoje je -“) (princ vaše) (princ „ n“));; přepsat symboly(defun nolocals () (setq těžit „Nastavil jsem svoji na novou hodnotu“) (setq vaše „Nastavil jsem tvou na novou hodnotu“) (dělej něco těžit vaše))(defun hlavní () ;; definovat dva symboly (setq těžit myglobální) (setq vaše váš globální) ;; vytiskněte je (princ "volání dosomething n") (dělej něco těžit vaše) (princ "volání nolocalů n") (nolocals) (princ "opětovné volání dosomethingu n") (dělej něco těžit vaše))
Další příklad ukazující použití zpětných nabídek a sílu LISP. Toto je příklad diferenciace.
; D (e, X) -; Vypočítá symbolickou derivaci výrazu e s respektem; do proměnné X. Vezmeme výraz ve standardní lispové předponě a vůli; použijte následující pravidla rozlišování.;; D (x) = 1; D (a) = 0; D (ln u) = D (u) / u ; D (u + v) = D (u) + D (v); D (u-v) = D (u) -D (v); D (u * v) = D (u) * v + u * D (v); D (u / v) = D (u) * v + (u * D (v)) / v ^ 2; D (v ^ u) = (v ^ u) * (u * D (v) / v + D (u) * ln (v));(defun D(E X & aux u proti) (kond ((rovnat se E X) 1) ((atom E) 0) (t (setq u (kádr E) proti (kádr E)) (caseq (auto E) (ln `(/ ,(D u X) ,u)) (+ `(+ ,(D u X) ,(D proti X))) (- `(- ,(D u X) ,(D proti X))) (* `(+ (* ,(D u X) ,proti) (* ,(D proti X) ,u))) (/ `(- (/ ,(D u X) ,proti) (/ (* ,u ,(D proti X)) (^ ,proti 2)))) (^ `(* ,E (+ (/ (* ,proti ,(D u X)) ,u) (* ,(D proti X) (ln ,u))))) (t (princ "CHYBA") (výstup)]