2009/09/10

IronScheme in Emacs

WS000016

Scheme 処理系には IronScheme という選択肢もあります。R6RS にほぼ準拠していて SRFI も .NET Framework も使えます。.NET に慣れ親しんだプログラマが Scheme を始めるにあたっては良い選択肢の一つかも知れません。ちなみに C# で実装されており、ソースも読むことができます。
コンソールの REPL だけでなく、Visual Studio 2008 で開発を行なうためのアドインや Emacs で開発を行なうためのインターフェースもあります。Visual Studio 2008 のアドインではシンタックスハイライトやインデント、入力補間などがサポートされているようです。

取りあえず Emacs で IronScheme が使えるようにしてみました。
WS000017

以下の設定を .emacs に追加しました。
(defun iron-scheme-other-window ()
  "Run IronScheme on other window"
  (interactive)
  (setq scheme-program-name "\"C:\\Program Files\\IronScheme\\IronScheme.Console.exe\" -emacs")
  (split-window)
  (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))))

例外がスローされた時などのメッセージが化けるのでこちらも追加。
(modify-coding-system-alist 'process "IronScheme.Console" '(utf-8 . utf-8))

起動ショートカット。
(define-key global-map "\C-c\C-si" 'iron-scheme-other-window)

Gauche での設定を参考に以下のように設定。
(defun scheme-other-window ()
  "Run Gauche on other window"
  (interactive)
  ;; set gosh path
  (setq scheme-program-name "\"C:\\Program Files\\Gauchebox\\Gauche\\bin\\gosh.exe\" -i")
  (split-window)
  (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))))

Dynamic Language Runtime

0 件のコメント:

コメントを投稿