この本では、Schemeが使われている。
自分でコードを書きながら、読み進めた方が楽しいので、
まずは、Scheme処理系の一つであるGauche+Emacsを使い、
REPLとコード補完できる環境を構築した。
OSはUbuntu、Emacsは自分でインストールしたEmacs 24.2を使用している。
Gaucheのインストール
gaucheはパッケージが用意されているのでapt-getでインストールする。$ apt-get install gauche
quackとscheme-completeのインストール
パッケージのダウンロード
インストール先は ~/.emacs.d/gauche-el とした。$ cd ~/.emacs.d/
$ mkdir gauche-el
$ cd gauche-el
$ curl -O http://www.neilvandyke.org/quack/quack.el
$ curl -O http://synthcode.com/emacs/scheme-complete-0.8.11.el.gz
$ gunzip scheme-complete-0.8.11.el.gz
$ mv scheme-complete-0.8.11.el scheme-complete.el
init.elの設定
emacsの設定ファイルinit.elにquackとscheme-completeの設定を追加する。(add-to-path 'load-path "~/.emacs.d/gauche-el")
(setq quack-default-program "gosh")
(require 'quack)
(require 'scheme-complete)
;;(autoload 'scheme-smart-complete "scheme-complete" nil t)
;; auto-completeを使っているので不要
;; (eval-after-load 'scheme
;; '(define-key scheme-mode-map "\e\t" 'scheme-smart-complete))
(add-hook 'scheme-mode-hook
(lambda ()
(make-local-variable 'eldoc-documentation-function)
(setq eldoc-documentation-function 'scheme-get-current-symbol-info)
(eldoc-mode)))
(setq lisp-indent-function 'scheme-smart-indent-function)
動作確認
Emacsを起動後、hello.scm を新規作成する。(print "こんにちは、世界!")
hello.scmのバッファでC-c C-lを押下する。
mini-bufferで、以下を聞かれる。
それぞれデフォルトのままで良い。
Load Scheme file: (default hello.scm) ~/workspace/sicp/
Run Scheme (default "gosh"):
REPLが開き、hello.scmの実行を結果が表示される。
#t
gosh>
とりあえず、他に、以下のコマンドが分かればOK。
- C-c C-e S式を評価する。
- M-x run-scheme REPLを起動する。
eldocで関数の説明が表示されるし、コード補完もできる。
いつも使っているslimeとあまり違和感はないようで、なかなか便利だ。
参考
quackhttp://www.neilvandyke.org/quack/
scheme-complete
http://synthcode.com/wiki/scheme-complete
auto-complete
http://cx4a.org/software/auto-complete/index.ja.html
SCIPのmobiファイル
https://github.com/twcamper/sicp-kindle
0 件のコメント:
コメントを投稿