현재 Common Lisp이 패키지 및 모듈을 관리하는 방법을 이해하려고합니다. 나는 점액 버퍼를 만든 다음 슬라임 모드로 설정되어 다른 버퍼에서이 코드를 실행하면Common Lisp 패키지 및 모듈 관리
(in-package :cl-user)
(ql:quickload :cl-who)
(ql:quickload :hunchentoot)
(ql:quickload :parenscript)
(defpackage :retro-games
(:use :cl :cl-who :hunchentoot :parenscript))
(in-package :retro-games)
(defclass game()
((name :initarg :name)
(votes :initform 0)))
, 나는 *slime-repl sbcl*
첫 번째 버퍼에 일부 인쇄를 참조하십시오 :
이 코드를 고려
로드 1 ASDF 시스템 : cl-who; "cl-who"로드 중
로드하려면 "parenscript":로드 1 ASDF 시스템 : parenscript; "parenscript"로드 중 ...
로드하려면 "hunchentoot":로드 1 ASDF 시스템 : hunchentoot; "hunchentoot"로드 중 ..............
즉, 두 개의 버퍼 사이에 "말하기"가있는 것 같습니다. 그러나 을 실행하려고 시도하면 CL-USER
패키지가 game
클래스에 대해 알지 못하기 때문에 오류가 발생합니다.
반면에 slime repl sbcl
버퍼에서 (in-package :retro-games)
을 실행하면 (make-instance game("Chess"))
을 실행할 수 있습니다.
질문은 어떻게 Common Lisp이 패키지로 작업을 구성합니까? 관련 메모에서 버퍼가 slime repl sbcl
인 것과 버퍼가 slime-mode
인 것은 무엇입니까?
패키지는 파이썬의 가상 환경과 비슷합니까? 즉, 내 경우에는 CL-WHO
, HUNCHENTOOT
및 PARENSCRIPT
이 어디에 설치되어 있습니까? 이것에 대한 선택의 여지가 있습니까?
그물에 대한 답변을 검색 했습니까? 이 주제에 많은 훌륭한 자료가 있습니다 (예 : "Practical Common Lisp - 21. 대형 프로그래밍 : 패키지 및 기호"Peter Seibel http://www.gigamonkeys.com/book/programming-in-the- large -packages-and-symbols.html). – rsm
안녕하세요, python 및 emacs 태그가 필요 없습니다. – Ehvince
Quicklisp은 파이썬의 가상 환경과 다릅니다. Quicklisp은 함께 작업하는 것보다 모든 라이브러리를 함께 만듭니다. [이 토론] (https://github.com/quicklisp/quicklisp-client/issues/148)을 참조하십시오. venv/you/need/venv가 있으면 [Qlot] (https://github.com/fukamachi/qlot)이 있습니다. – Ehvince