YOSHINO日記

プログラミングに関すること

schemeをemacsで使う

scheme開発環境をつくる

僕と契約してLisperになってよ!-Gaucheの開発環境を整えよう- - (define -ayalog '())

結論:Emacsgaucheの組み合わせが一番良さそう。

環境:ubuntu 18

$ sudo apt-get installl gauche
$ sudo apt-get install emacs25
$ mkdir  ~/.emacs.d/
$ vim ~/.emacs.d/init.el

設定は上記を参照した。

;; 対応する括弧を表示する
(show-paren-mode t)

;; *.~ とかのバックアップファイルを作らない
(setq make-backup-files nil)

;; .#* とかのバックアップファイルを作らない 
(setq auto-save-default nil)
 
;; ^H を バックスペースへ
(global-set-key "\C-h" 'delete-backward-char)

;; 括弧の補完
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(setq skeleton-pair 1)

;; emacsでGauche
(setq process-coding-system-alist
      (cons '("gosh" utf-8 . utf-8) process-coding-system-alist))
(setq scheme-program-name "/usr/local/bin/gosh -i")

(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)

(defun scheme-other-window ()
  "Run Gauche on other window"
  (interactive)
  (split-window-horizontally (/ (frame-width) 2))
  (let ((buf-name (buffer-name (current-buffer))))
    (scheme-mode)
    (switch-to-buffer-other-window
     (get-buffer-create "*scheme*"))
    (run-scheme scheme-program-name)
    (switch-to-buffer-other-window
     (get-buffer-create buf-name))))

(define-key global-map
  "\C-cG" 'scheme-other-window)

emacsを開いて、

  1. Ctrl+cを押したあとにShift+g

  2. C-x : ファイルの保存  

  3. C-e : 実行結果が右に表示される

vim

emacsschemeの環境はとても便利だけれど、普段はvimという人はevilを使いましょう。

How to Navigate Emacs using Evil Mode

cloneしてファイルを配置します。

git clone https://github.com/emacs-evil/evil ~/.emacs.d/evil

~/.emacs.d/init.el に追記します。

(add-to-list 'load-path "~/.emacs.d/evil")
(require 'evil)
(evil-mode 1)

sicp

2つの翻訳

minghai氏が翻訳。 非公式PDF版SICPの全訳を公開しました - minghaiの日記

真鍋氏が翻訳。 非公式PDF版SICP・新訳 - アスペ日記

翻訳の質みたいなものが議論されているけど。

Schemeチュートリアル的なもの

もうひとつの Scheme 入門

この記事の目標はコンピュータ科学の教科書の決定版である SICP を読める程度の Scheme の知識を提供することです。

SICPで詰まったりしたらやってみよう。