Programming

(Common Lisp) 라이브러리 설치하기

steloflute 2021. 3. 29. 22:02

(Steel Bank Common Lisp 기준으로 설명한다.)

 

Quicklisp 는 Common Lisp의 대표적인 라이브러리 관리자이다.

 

Quicklisp 를 설치한다.

Quicklisp beta 에 가서 beta.quicklisp.org/quicklisp.lisp 를 다운로드한다:

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

 

quicklisp 설치 프로그램을 로드한다.

$ sbcl --load quicklisp.lisp

 

quicklisp 를 설치한다. (다운로드함)

* (quicklisp-quickstart:install)

 

다운로드한 quicklisp.lisp 는 이제 필요가 없다.

 

이후 quicklisp 를 통한 라이브러리 사용은,

(load "~/quicklisp/setup.lisp")

(ql:quickload :dexador)

이렇게 한다. ~(사용자 홈 디렉토리)가 Windows에서도 작동한다. ql:quickload 는 해당 라이브러리가 설치되어 있지 않다면 다운로드하여 설치도 해준다.

 

URL 을 입력받아 HTML title 을 보여주는 프로그램 예제:

(load "~/quicklisp/setup.lisp")
(ql:quickload :dexador)
(ql:quickload :cl-ppcre)
(defun main ()
    (let (url body title subm)
        (format t "URL: ")
        (finish-output)
        (setf url (read-line))
        (setf body (dex:get url))
        (setf subm (nth-value 1 (cl-ppcre:scan-to-strings "(?i).*<title>(.*)</title>.*" body)))
        (setf title (elt subm 0))
        (format t "Title: ~a~%" title)))

 

그런데, dexador를 로드할 때 4초 정도 소요되어 시간 소모가 많다.

Lisp 이미지를 저장하면 로딩 시간을 없앨 수 있다.

(ql:quickload "dexador")

후에

(sb-ext:save-lisp-and-die "my.core")

하면 약 50 MB의 my.core 가 생성되고,

sbcl --core my.core 하면

dexador가 로드된 채로 REPL이 실행되게 된다.