Differences between revisions 21 and 22
Revision 21 as of 2018-10-10 10:29:50
Size: 3386
Editor: 정수
Comment:
Revision 22 as of 2018-10-10 10:29:53
Size: 3399
Editor: 정수
Comment:
Deletions are marked like this. Additions are marked like this.
Line 79: Line 79:
 (unless cond stmt):: 조건이 참이 아닐 동안 실행  (unless cond stmt):: 조건이 참이 아닐 동안 반복하여 실행

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 alst)
alist에서 key에 해당하는 entry를 추출.
(mapcar func lst)
list 각 원소에 대해 func를 적용하고 그 결과를 list로 이어붙여 반환.
(apply func args)
args와 함께 func를 호출.
(append args)
args들을 이어붙여 하나의 list로 반환.
(remove-if-not func lst)
list의 각 원소 중, func가 nil인 원소만 제외하고 반환.
(find key lst :key func)
list에서 key를 찾아 반환. 각 원소에서 key를 찾는 방법을 지정할 수 있음.
(member elem lst)
elem이 lst에 속하는지 여부를 반환.
(push elem lst)
lst의 맨 앞에 elem을 추가하여 반환.
(progn stmts)
여러 stmt들을 수행함.
(print str)
화면에 출력. 개행을 덧붙임.
(prin1 str)
화면에 출력하되 개행을 생략.
(read)
입력값을 받음.
(eval stmt)
구문을 평가하여 실행.
(loop stmt)
구문을 반복하여 실행.
(unless cond stmt)
조건이 참이 아닐 동안 반복하여 실행

CommonLisp (last edited 2022-09-02 01:05:43 by 정수)