2014-07-17 1 views
2

나는 이맥스를 사용하여 일반적인 lisp로 프로그래밍하는 법을 배우고 있으며 혼란스런 문제에 부딪혔다. 내가 표현을슬라임 평가와 다른 완충제로 평가 하시겠습니까?

(defconstant +some-constant+ (make-hash-table)) 

를 입력하고 내가

M-x eval-buffer 

로 평가 때 나는 오류를

Symbol's function definition is void: defconstant 

을 얻을하지만 복사 및 점액 REPL에이 붙여 넣을 경우, 그것은 완벽하게 작동 . 물론 전체 프로그램을 실행하지 않고도 프로그램 내에서 lisp 코드를 평가할 수있는 편리한 키보드 바로 가기를 렌더링합니다. 나는 시험 할 때마다 내 버퍼에서 모든 것을 슬라임 터미널에 복사하는 것을 끝낸다.

여기에 무슨 일이 일어나고 있습니까?

답변

7

M-x eval-buffer은 Common Lisp가 아닌 emacs lisp로 버퍼를 평가합니다. C-c C-k을 원하면 파일을 컴파일하고로드하십시오.

일반적으로 접두어없이 slime-이없는 lisp 관련 명령이 표시되는 경우이 명령은 아마도 emacs-lisp 기능 일 것입니다.

+0

C-c C-k를 사용하면 컴파일되지만 slime repl을 통해 파일에 정의 된 함수를 실행하려고하면 함수가 정의되지 않았다고 불평합니까? – mooglinux

+0

흠. 그것은 일어날 일이 아니며, 내가하는 행동이 아닙니다. 파일이 lisp에서로드되는지 확인하십시오 (이맥 외부의 독립 실행 형 세션에서로드하여). – gsg

+0

@mooglinux 또한 코드를 별도의 패키지에 넣는 경우 (버퍼 :/파일의 맨 위에 cl : in-package 사용) REPL에서 패키지를 전환했는지 확인하십시오 (동일한 cl : in-package 사용) . – cybevnm