Quicklispは、ASDFをベースにした、Common Lispのライブラリを管理するシステムです。
に対応しています。
利用することで、ライブラリの
を自動化できるため、Quicklispに対応しているライブラリは、インストールやアップデートが非常に簡単にできます。
また、環境に依存しにくい作りで、Windowsでも正常に動作します。
非常に簡単です。quicklisp.lispをダウンロードして読み込み、後はメッセージの指示に従うだけです。
例えば、CLISPでは次のようにインストールします。ダウンロードしたquicklisp.lispがあるディレクトリでCLISPを起動します。
$ clisp i i i i i i i ooooo o ooooooo ooooo ooooo I I I I I I I 8 8 8 8 8 o 8 8 I \ `+' / I 8 8 8 8 8 8 \ `-+-' / 8 8 8 ooooo 8oooo `-__|__-' 8 8 8 8 8 | 8 o 8 8 o 8 8 ------+------ ooooo 8oooooo ooo8ooo ooooo 8 Welcome to GNU CLISP 2.48 (2009-07-28) <http://clisp.cons.org/> Copyright (c) Bruno Haible, Michael Stoll 1992, 1993 Copyright (c) Bruno Haible, Marcus Daniels 1994-1997 Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998 Copyright (c) Bruno Haible, Sam Steingold 1999-2000 Copyright (c) Sam Steingold, Bruno Haible 2001-2009 Type :h and hit Enter for context help. [1]> (load "quicklisp.lisp") ;; Loading file quicklisp.lisp ... ==== quicklisp quickstart loaded ==== To continue, evaluate: (quicklisp-quickstart:install) ;; Loaded file quicklisp.lisp T [2]> (quicklisp-quickstart:install) ; Fetching #<URL "http://beta.quicklisp.org/quickstart/asdf.lisp"> ; 159.59KB ================================================== 163,424 bytes in 0.59 seconds (268.79KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/quickstart/quicklisp.tar"> ; 180.00KB ================================================== 184,320 bytes in 0.42 seconds (426.67KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/quickstart/setup.lisp"> ; 2.66KB ================================================== 2,719 bytes in 0.00 seconds (0.00KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp.txt"> ; 0.40KB ================================================== 408 bytes in 0.05 seconds (8.50KB/sec) ==== quicklisp installed ==== To load a system, use: (ql:quickload "system-name") To find systems, use: (ql:system-apropos "term") To load Quicklisp every time you start Lisp, use: (ql:add-to-init-file) For more information, see http://www.quicklisp.org/beta/ NIL [3]> (ql:add-to-init-file) I will append the following lines to #P"C:\\Documents and Settings\\manabu\\My Documents\\.clisprc.lisp": ;;; The following lines added by ql:add-to-init-file: #-quicklisp (let ((quicklisp-init (merge-pathnames "quicklisp\\setup.lisp" (user-homedir-pathname)))) (when (probe-file quicklisp-init) (load quicklisp-init))) Press Enter to continue. #P"C:\\Documents and Settings\\manabu\\My Documents\\.clisprc.lisp" [4]>
(load "quicklisp.lisp")でquicklisp.lispを読み込んでから、表示されるメッセージに従って、(quicklisp-quickstart:install)と(ql:add-to-init-file)を順に評価すれば終わりです。
Quicklispの新しいバージョンがリリースされている場合、(ql:update-client)でアップデートできます。
> (ql:update-client) Updating from version 2010121400 to version 2011040600. Press Enter to continue. ; Fetching #<URL "http://beta.quicklisp.org/quickstart/quicklisp-2011040600.tgz"> ; 34.86KB ================================================== 35,694 bytes in 0.23 seconds (148.96KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/quickstart/setup.lisp"> ; 2.66KB ================================================== 2,719 bytes in 0.00 seconds (0.00KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/quickstart/asdf.lisp"> ; 159.59KB ================================================== 163,424 bytes in 0.17 seconds (927.87KB/sec) New quicklisp client installed. It will take effect on restart. T
メッセージに従って、処理系を再起動すれば終了です。
Quicklispでは、ライブラリのインストールと読み込みが同じ操作でできます。ql:quickloadを呼ぶことで、ライブラリがインストールされていない場合、自動的にインストールし、インストールされている場合、ライブラリを読み込みます。
例えば、既にインストールされているAlexandriaを読み込む場合、このような感じです。
> (ql:quickload "alexandria") To load "alexandria": Load 1 ASDF system: alexandria ; Loading "alexandria" ("alexandria")
なお、ql:quickloadに渡すライブラリの名前はdesignatorなので、文字列以外に、キーワードなどのシンボル(:alexandriaや'#:alexandriaなど)でも大丈夫です。
ライブラリをインストールするときなど、ライブラリの正しい名前が分からなくて困るときがあります。あるいは、ライブラリの中から特定のキーワードを含むライブラリを探したいときもあります。こういったときに、ql:system-aproposでライブラリの検索ができます。
名前にiterateを含むライブラリを検索する場合は、次のように検索します。
> (ql:system-apropos "iterate") #<SYSTEM hu.dwim.reiterate / hu.dwim.reiterate-20110219-darcs / quicklisp 2011-03-20> #<SYSTEM hu.dwim.reiterate.test / hu.dwim.reiterate-20110219-darcs / quicklisp 2011-03-20> #<SYSTEM iterate / iterate-20110219-darcs / quicklisp 2011-03-20> #<SYSTEM iterate-pg / iterate-20110219-darcs / quicklisp 2011-03-20> #<SYSTEM iterate-tests / iterate-20110219-darcs / quicklisp 2011-03-20> #<SYSTEM x.fdatatypes-iterate / x.fdatatypes-20110320-git / quicklisp 2011-03-20> NIL
それぞれの行ごとにライブラリの情報が表示されます。一行目を例にしてみると、hu.dwim.reiterateがライブラリの正式な名前で、hu.dwim.reiterate-20110219-darcsがライブラリのバージョンです。
また、(ql:system-list)を評価することで、ライブラリの一覧を表示できます。
(ql:update-all-dists)でアップデートできます。
> (ql:update-all-dists) Changes from quicklisp 2011-01-10 to quicklisp 2011-03-20: New projects: cl-fftw3-20101006-git graphic-forms-20101006-svn clon-20101107-git Updated projects: cl-glfw-20110110-git -> cl-glfw-20101107-git moptilities-20110110-http -> moptilities-20101006-http cl-skip-list-20101207-git -> cl-skip-list-20101107-git glop-20110110-git -> glop-20101107-git mel-base-20110110-git -> mel-base-20101006-darcs hu.dwim.syntax-sugar-20101207-darcs -> hu.dwim.syntax-sugar-20101107-darcs postmodern-20110110-git -> postmodern-20101107-git 3b-swf-20110110-git -> 3b-swf-20101107-git restas-20110110-git -> restas-20101107-git simple-date-time-20110110-git -> simple-date-time-20101006-git gsll-20101207-git -> gsll-20101107-git cl-mongo-20101207-git -> cl-mongo-20101107-git usocket-20110110-svn -> usocket-20101006-svn restas-directory-publisher-20110110-git -> restas-directory-publisher-20101107-git fare-utils-20101207-git -> fare-utils-20101107-git chillax-20101207-git -> chillax-20101107-git st-json-20101207-git -> st-json-20101107-git js-v0.10.12-git -> js-20101107-git gsd-20101207-git -> gsd-20101006-git nst-3.0.1 -> nst-2.1.0 prepl-20101207-git -> prepl-20101006-git hemlock-20110110-git -> hemlock-20101107-git hu.dwim.serializer-20101207-darcs -> hu.dwim.serializer-20101107-darcs log5-20110110-git -> log5-20101006-git pileup-20101207-git -> pileup-20101107-git cl-twitter-20110110-git -> cl-twitter-20101107-git hu.dwim.def-20110110-darcs -> hu.dwim.def-20101107-darcs protobuf-20110110-git -> protobuf-20101006-git gbbopen-20110110-svn -> gbbopen-20101107-svn cl-fad-0.6.4 -> cl-fad-0.6.3 weblocks-20110110-hg -> weblocks-20101107-hg unix-options-20110110-git -> unix-options-20101006-git cl-redis-20110110-git -> cl-redis-20101006-git ucw-20110110-darcs -> ucw-20101107-darcs cleric-20101207-git -> cleric-20101006-git cl-gtk2-20101207-git -> cl-gtk2-20101107-git glaw-20110110-git -> glaw-20101107-git cl-test-more-20110110-git -> cl-test-more-20101107-git xmls-1.4 -> xmls-1.3 parse-js-20110110-git -> parse-js-20101107-git sw-mvc-20101207-git -> sw-mvc-20101107-git screamer-20101207-git -> screamer-20101107-git cl-m4-20110110-git -> cl-m4-20101006-git clfswm-20110110-svn -> clfswm-20101107-svn blackthorn-engine-20110110-hg -> blackthorn-engine-20101107-hg cl-closure-template-20110110-git -> cl-closure-template-20101107-git hu.dwim.util-20101207-darcs -> hu.dwim.util-20101107-darcs adw-charting-20110110-http -> adw-charting-20101006-http closer-mop-20110110-darcs -> closer-mop-20101107-darcs verrazano-20110110-darcs -> verrazano-20101006-darcs bknr-datastore-20110110-git -> bknr-datastore-20101006-git clpython-20110110-git -> clpython-20101107-git slime-20110110-cvs -> slime-20101107-cvs cl-opengl-20110110-git -> cl-opengl-20101107-git symbolicweb-20101207-git -> symbolicweb-20101107-git cl-sqlite-20110110-git -> cl-sqlite-20101107-git lispbuilder-20110110-svn -> lispbuilder-20101107-svn cl-store-20101207-darcs -> cl-store-20101006-http micmac-0.0.2 -> micmac-0.0.1 montezuma-20110110-svn -> montezuma-20101107-svn relational-objects-for-lisp-20110110-darcs -> relational-objects-for-lisp-20101107-darcs plokami-20110110-git -> plokami-20101107-git cl-prevalence-20101207-hg -> cl-prevalence-20101006-http f2cl-20110110-cvs -> f2cl-20101107-cvs folio-20101207-git -> folio-20101107-git clsql-20101207-git -> clsql-20101107-git hu.dwim.asdf-20110110-darcs -> hu.dwim.asdf-20101107-darcs fsbv-20101207-git -> fsbv-20101006-git rpc4cl-0.3.1 -> rpc4cl-0.3.0 hu.dwim.stefil-20101207-darcs -> hu.dwim.stefil-20101107-darcs Removed projects: asdf-install-20101207-git atdoc-20110110-git bourbaki-20110110-http cells-20101207-git cells-gtk3-20110110-git cl-azure-20110110-git cl-beanstalk-20110110-git cl-bibtex-20110110-cvs cl-binary-file-0.3 cl-btree-0.4 cl-charms-20110110-git cl-couch-20101207-darcs cl-enumeration-20110110-cvs cl-geo-0.1 cl-geocode-20101207-git cl-gpu-20101207-git cl-iconv-20101207-git cl-lexer-20110110-git cl-memcached-0.4.1 cl-migrations-20110110-http cl-mssql-0.0.2 cl-mw-20101207-git cl-org-mode-20101207-git cl-plplot-0.6.0 cl-popen-20110110-git cl-proc-20101207-darcs cl-quakeinfo-20110110-git cl-quickcheck-20110110-git cl-stm-20101207-http cl-swap-file-0.4 cl-uglify-js-20110110-git cl-wal-0.3 cl-wkb-0.1 clazy-20110110-cvs clg-20110110-cvs clon-1.0b16 clos-diff-20110110-git commonqt-20110110-git csv-parser-20101207-http curly-20101207-darcs deflate-20101207-git dso-lex-0.3.2 dso-util-0.1.2 elephant-20110110-darcs fucc_0.2.1 inotify-20101207-git latex-table-20101207-git loopless-20101207-git lredis-20110110-git mgl-20110110-git monkeylib-binary-data-20110110-git monkeylib-foo-20101207-git monkeylib-macro-utilities-20101207-git monkeylib-markup-20101207-git monkeylib-markup-html-20101207-git monkeylib-pathnames-20101207-git monkeylib-prose-diff-20101207-git monkeylib-test-framework-20101207-git monkeylib-utilities-20101207-git mtlisp-20110110-git phemlock-20110110-cvs plain-odbc-20110110-svn proton-20101207-git sb-vector-io-20101207-git sequence-iterators-20101207-darcs spartns-1.4.3 sqnc-20110110-git testbild-20101207-git wuwei-20110110-git xhtmlgen-20110110-git Press Enter to continue. ; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp/2011-03-20/releases.txt"> ; 118.55KB ================================================== 121,392 bytes in 0.89 seconds (133.05KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp/2011-03-20/systems.txt"> ; 78.72KB ================================================== 80,609 bytes in 0.28 seconds (279.15KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/usocket/2011-03-20/usocket-0.5.0.tgz"> ; 56.67KB ================================================== 58,035 bytes in 0.49 seconds (116.86KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/iterate/2011-02-19/iterate-20110219-darcs.tgz"> ; 327.64KB ================================================== 335,503 bytes in 0.77 seconds (427.73KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/slime/2011-03-20/slime-20110320-cvs.tgz"> ; 879.40KB ================================================== 900,501 bytes in 0.84 seconds (1043.17KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/parenscript/2011-03-20/parenscript-2.3.tgz"> ; 123.23KB ================================================== 126,191 bytes in 0.87 seconds (140.84KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/fare-utils/2011-03-20/fare-utils-20110320-git.tgz"> ; 52.56KB ================================================== 53,819 bytes in 0.25 seconds (210.23KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/alexandria/2011-03-20/alexandria-20110320-git.tgz"> ; 45.14KB ================================================== 46,222 bytes in 0.25 seconds (180.55KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/metabang-bind/2011-02-19/metabang-bind-20110219-git.tgz"> ; 19.74KB ================================================== 20,215 bytes in 0.22 seconds (90.56KB/sec) ; Fetching #<URL "http://beta.quicklisp.org/archive/closer-mop/2011-03-20/closer-mop-20110320-darcs.tgz"> ; 25.90KB ================================================== 26,520 bytes in 0.39 seconds (66.24KB/sec) NIL
(書きかけ)
Quicklispの構造 ┏━━━━━━━━━━━━━━━┓ ┃ Quicklisp ┃ ┣━━━━━━━━━━━━━━━┫ ┃ ASDF ┃ ┣━━━━━━━━━━━━━━━┫ ┃ Common Lispの基本的な機能 ┃ ┃ (コンパイラやパッケージなど) ┃ ┗━━━━━━━━━━━━━━━┛