CommonLisp 학습을 위한 책

프로젝트 셋팅 스크린캐스트

CL-USER> (ql:quickload :cl-project)
CL-USER> (cl-project:make-project #p"~/myproject" :author "Jeongsoo Park" :email "toracle@gmail.com")
CL-USER> (ql:quickload :myproject)
CL-USER> (push #p"/home/toracle/myproject/" asdf:*central-registry*)
CL-USER> (ql:quickload :myproject)
CL-USER> (asdf:test-system :myproject)

QuickLisp 설치

QuickLisp는 CL에서 널리 사용되는 패키지 관리자이다. 일단 이걸 처음에 셋팅해놓아야 다른 패키지들 설치하기가 편리하다.

우선 아래 명령으로 quicklisp 부트스트래핑 스크립트를 다운로드 받는다.

$ curl -O https://beta.quicklisp.org/quicklisp.lisp

그리고 CL REPL을 실행하고, 해당 파일을 로드한다.

CL-USER> (load "~/quicklisp.lisp")

아래 명령으로 quicklisp을 설치한다.

CL-USER> (quicklisp-quickstart:install)

설치가 진행되고, ~/quicklisp 디렉토리가 생성된다.

아래 명령을 실행하여 quicklisp이 매 세션마다 자동적으로 로딩되도록 한다.

CL-USER> (ql:add-to-init-file)

자주 쓰는 명령어

Land of Lisp에서 나온 명령

(ash number shift-digits)
숫자를 bit만큼 shift.
(1- number)
숫자를 1 감소하여 반환.
(1+ number)
숫자를 1 증가하여 반환.
(flet ...)
let과 비슷하나 변수 대신 함수를 정의하는 용도.
(labels ...)
flet과 비슷하나, 내부에서 정의된 함수끼리 서로 호출할 수 있음. let과 let*의 차이와 비슷함.
(princ str)
화면에 출력.
(oddp number)
홀수인지 여부를 반환.
(cond ...)
조건 분기의 일반화된 form.
(case ...)
조건 대신 값을 기준으로 분기하는 form.
(eq a b)
symbol의 경우 동등성 비교에 사용.
(equal a b)
symbol 이외의 모든 경우 동등성 비교에 사용.
(assoc key alist)
alist에서 key에 해당하는 entry를 추출.