(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이 실행되게 된다.
'Programming' 카테고리의 다른 글
How to convert string to int in C#? (0) | 2021.04.05 |
---|---|
Common Lisp을 위한 정규표현식 (0) | 2021.03.30 |
(Common Lisp) 숫자를 영어로 표시하기 (0) | 2021.03.25 |
트리 순회 알고리즘#04 레벨 순회(Level Order Traversal) (0) | 2021.03.20 |
Tomcat 설치하기 (0) | 2021.03.17 |