MacPortsでSBCLを入れてみる
Common Lispの勉強のためSBCLをMacPortsで入れてみることに。
MacPortsの詳しい解説ははこべにっきさんを参照しましょう。
Finkも入れているので、/opt/localが先にくるようにPATHを設定しておく。
export PATH=/opt/local/bin:/sw/bin:/sw/sbin:$HOME
MacPortsを入れたっきり放置していたためかうまく動かなかったが sync を実行したら
うまく動くようになった。
> sudo port -d sync
まず、Lispの処理系を lisp で検索してみる。SBCLは出てこない。
sbclで検索する。出てきた。
> sudo port -d search lisp
clisp lang/clisp 2.40 The Clisp Common Lisp Implementation
lisp-hyperspec lang/lisp-hyperspec 7.0 The Common Lisp HyperSpec
onlisp lang/onlisp 0.0.1 Lytha Ayth’s texinfo version of Paul Graham’s book On Lisp.> sudo port -d search sbcl
sbcl lang/sbcl 1.0 The Steel Bank Common Lisp system
SBCL、CLISPもついでにインストールしておく(onlispも意味もなく入れておく)
> sudo port -d install sbcl
> sudo port -d install clisp
> sudo port -d install onlisp
以下はSLIMEの設定。.emacsに貼り付け。
LispUser.netさんを参考にしました。
;;; SLIME
(require 'slime)
(setq slime-net-coding-system 'utf-8-unix)
(add-hook 'lisp-mode-hook (lambda ()
(slime-mode t)
(show-paren-mode)))
(add-hook 'slime-mode-hook
(lambda ()
(setq lisp-indent-function 'common-lisp-indent-function)))
(add-hook 'inferior-lisp-mode-hook
(lambda ()
(slime-mode t)
(show-paren-mode)))
(setq inferior-lisp-program "/opt/local/bin/sbcl")
;; Additional definitions by Pierpaolo Bernardi.
(defun cl-indent (sym indent)
(put sym 'common-lisp-indent-function
(if (symbolp indent)
(get indent 'common-lisp-indent-function)
indent)))
(cl-indent 'if '1)
(cl-indent 'generic-flet 'flet)
(cl-indent 'generic-labels 'labels)
(cl-indent 'with-accessors 'multiple-value-bind)
(cl-indent 'with-added-methods '((1 4 ((&whole 1))) (2 &body)))
(cl-indent 'with-condition-restarts '((1 4 ((&whole 1))) (2 &body)))
(cl-indent 'with-simple-restart '((1 4 ((&whole 1))) (2 &body)))
(setq slme-lisp-implementations
'((sbcl ("sbcl") :coding-system utf-8-unix)
(cmucl ("cmucl") :coding-system iso-latin-1-unix)))
;; CMUCL
;(defun cmucl-start ()
; (interactive)
; (shell-command ""))
;; SBCL
(defun sbcl-start ()
(interactive)
(shell-command "sbcl --load $HOME/.slime.l &"))
;; GNU CLISP
(defun clisp-start ()
(interactive)
(shell-command (format "clisp -K full -q -ansi -i %s/.slime.l &" (getenv "HOME"))))

No comments
Jump to comment form | comments rss [?] | trackback uri [?]