« Ruby/Rails勉強会@関西-30メモ | メイン | 実践Common Lispを読んでみる(その2) »

2008年9月24日

実践Common Lispを読んでみる(その1)

ついにCommon Lispに浮気することにしました。とりあえず今日は第2章までとそれ以前の問題として環境構築のお話を。

当方の環境:Debian(etch)においてとりあえずインストールするものは

$ sudo apt-get install slime sbcl hyperspec 

これで一通りのファイルは取得できます。hyperspecは/root/tmp以下に保存されたので自分のhomeの.emacs.dフォルダ以下に展開しておきました。

続いて.emacs.dの編集

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;slime
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/")
(add-hook 'lisp-mode-hook (lambda ()
                            (slime-mode t)
                            (show-paren-mode)))
(require 'hyperspec)
(setq common-lisp-hyperspec-root
      (concat "file://"
              (expand-file-name "~/.emacs.d/HyperSpec/")
              )
      common-lisp-hyperspec-symbol-table
      (expand-file-name "~/.emacs.d/HyperSpec/Data/MapSym.txt")
)

(require 'slime)
(setq slime-net-coding-system 'utf-8-unix) ;; 日本語利用のための設定(Lisp 環境側の対応も必要)
(setq inferior-lisp-program "sbcl")
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(add-hook 'lisp-mode-hook
          (lambda ()
            (slime-mode t)
            (show-paren-mode)
            (global-set-key "\C-cH" 'hyperspec-lookup)
            )
)

(slime-autodoc-mode)
;; These are the 3 CL implementations that currently work with SLIME/Win32:
;; (Note: Unless you want to try out all 3, you only need one of these functions)
;; CMU Common Lisp - http://www.common-lisp.net/project/cmucl
(defun cmucl-start ()
  (interactive)
  (shell-command "~/local/bin/lisp -core ~/local/lib/cmucl/lib/user.core -load ~/.slime.lisp&"))

;; SBCL
(defun sbcl-start ()
  (interactive)
  (shell-command "sbcl --core ~/local/lib/sbcl/main.core --load ~/.slime.lisp &"))

;; GNU CLISP - http://clisp.cons.org/
(defun clisp-start ()
  (interactive)
  (shell-command (format "clisp -K full -q -ansi -i %s/.slime.lisp &" (getenv "HOME"))))

えー、google-code-prettifyがlispに対応してないので若干コードが見づらいですが基本的にはEmacs による Lisp Hackingをそのままコピペしただけです、はい。

作業は全部Emacs上で行います。基本的な流れとしては
  1. M-x slimeでREPL(対話式のLispバッファ)を起動
  2. 直接REPLでLispを実行するか、別バッファでLispファイルを編集しコンパイルしてからREPLで評価
となります。さすがにバッファの切り替えとかは各自で調べてください。 でもって最後に今日知ったコマンド。
  • C-c C-q (slime-close-parens-at-point) 必要な閉じ括弧を全て閉じる
  • C-c C-c (slime-compile-defun) 関数定義をLispに送信し、評価、コンパイルを行う
  • ,(slime-handle-repl-shortcut) コマンドを入力するプロンプトを表示、ここでquitかsayoonaraでslimeを終了

screen_080924_01.png

screen_080924_02.png

ついでになんとなく画面写真を載せてみる

投稿者 mak : 2008年9月24日 05:07

トラックバック

このエントリーのトラックバックURL:
http://sorakaze.net/cgi-bin/blog/mt-tb.cgi/138

コメント

コメントする