PC-LISP
PC-LISPPC-LISP는 Peter Ashwood-Smith에 의해 Franz Lisp 사투리를 구현한 것입니다.
버전 2.11은 1986년 5월 15일에 출시되었습니다.최신 버전은 다음 외부 링크에서 다운로드할 수 있습니다.
현재 PC-LISP는 32비트 및 64비트 Linux, Mac 및 Windows로 이식되어 있습니다.
Franz LISP 사투리는 ITS 버전의 Maclisp의 즉각적이고 이식적인 후속 언어이며, 조작이 실용적이기 때문에 Steven Levy 책 Hackers의 LISP에 가장 가까운 언어입니다.PC-LISP는 DOS 에뮬레이터 및 최신 Windows 버전에서 잘 작동합니다.PC-LISP는 Franz LISP를 구현하고 있기 때문에 현대 Common Lisp의 다이내믹스코프 이전 버전입니다따라서 이는 역사적으로 중요한 구현입니다.
예
세션은 Franz LISP에서 다이내믹 스코핑을 나타내는 다음 코드를 실행하고 있습니다.PC-LISP는, 다음의 기능을 실장하지 않는 것에 주의해 주세요.let
Emacs Lisp가 로컬 변수에 제공하는 특수한 형식입니다.대신 모든 변수는 ALGOL 기반 언어가 "글로벌"이라고 부르는 것입니다.ALGOL 스코핑 규칙(렉시컬 스코핑)을 도입한 최초의 리스프 방언은 Scheme였습니다만, Common Lisp 언어에도 이 기능이 추가되었습니다.
;; 동적 범위 지정 시연 ;; 이것은 "글로벌" 변수입니다. (설정 마이글로벌 "이것은 나의 글로벌 변수") ;; 다른 글로벌 변수 (설정 yourglobal "이것은 나의 글로벌 변수") ;; 기호를 인쇄하는 기능 (삭제하다 어떻게 좀 해봐. (내꺼 당신의) (프린터 "내 건...") (프린터 내꺼) (프린터 "\n") (프린터 "*당신의 것은-") (프린터 당신의) (프린터 "\n")) ;;; 기호를 덮어씁니다. (삭제하다 동작 () (설정 내꺼 "내 것을 새로운 가치로 설정했다") (설정 당신의 "당신의 가치를 새로운 가치로 설정했습니다.") (어떻게 좀 해봐. 내꺼 당신의)) (삭제하다 주된 () ;; 2개의 기호를 정의합니다. (설정 내꺼 마이글로벌) (설정 당신의 yourglobal) ;; 인쇄합니다. (프린터 "복사량\n") (어떻게 좀 해봐. 내꺼 당신의) (프린터 "nolocals\n") (동작) (프린터 "복사 재실행\n") (어떻게 좀 해봐. 내꺼 당신의))
백쿼트의 사용법과 LISP의 파워를 나타내는 다른 예도 있습니다.이것은 차별화의 예입니다.
; D(e,X) - 표현식 e의 기호 도함수를 계산한다. 변수 X로 이동합니다.표준 lisp 프리픽스 형식으로 표현하여 ; 다음 미분 규칙을 사용합니다. ; ; 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)) ; (삭제하다 D(e X &aux u v) (견디다 ((동등. e X) 1) ((원자 e) 0) (t (설정 u (캐더 e) v (캐드 e)) (케이스 (차 e) (인 `(/ ,(D u X) ,u)) (+ `(+ ,(D u X) ,(D v X))) (- `(- ,(D u X) ,(D v X))) (* `(+ (* ,(D u X) ,v) (* ,(D v X) ,u))) (/ `(- (/ ,(D u X) ,v) (/ (* ,u ,(D v X)) (^ ,v 2)))) (^ `(* ,e (+ (/ (* ,v ,(D u X)) ,u) (* ,(D v X) (인 ,u))))) (t (프린터 "오류") (퇴장)]