Emacs + Scheme な世界に入り込んでみました

どうも、Ramencozoです。
卒研発表終わって一息ついてるとこです(´ω`)

さて、某OJAGや某JavaKucheなあたりの方々から「関数型言語」とか「Emacs」とかの単語をよくお聴きする機会がありましたので、ちょっと触ってみました。
(xHAGO楽しかったです!自分のLTが宣言のみになっちゃったのはアレでしたがw)

さてさてひとまず、環境構築話となります。
対象はLispという関数型言語の方言(?)らしい、Schemeです。動作環境はWinXPです。

でもってUNIXライクなOSでの作業もできるように鍛錬するつもりで、エディタはEmacsを使います。
もうひとつのScheme入門さんとMengurumeLabsさんのページを参考に構築してみました。それぞれダウンロード場所は下記。

MzScheme(右端で「close」してページ中央「Download」)
Emacs for Win(emacs-22.3-bin-i386.zip)

MzSchemeの方は.exeなインストーラですのでNext→Next→Finishな感じでインスコしちゃってPATH通します。
Emacs for Winの方はzip解凍後お好きな場所に置いてbinなあたりにPATHを通します。

ここではそれぞれ、
"C:\Program Files\MzScheme"
"C:\Program Files\emacs-22.3\bin"
にPATHを通したとします。(正直Emacsの方はいらないですが)

このあと、自分は他の処理系を今のところ使わない予定なので、EmacsScheme専用のエディタ化しちゃいます。

ひとまず、
"C:\Documents and Settings\[ユーザー名]\Application Data"
な場所に、「.emacs」「mzschemerc.ss」のふたつのテキストファイルを保存します。
(メモ帳で名前を付けて保存→「".emacs"」と保存すれば.から始まる名前のファイルを保存できます)

それぞれ中身は下記。

.emacs

(show-paren-mode t) ; 対応する括弧を表示する
;(setq scheme-program-name "C:/Program Files/MzScheme/MzScheme.exe") ; run-scheme で動かす処理系

; もし上の設定でうまくいかなかった場合は C:/Program Files/MzScheme に PATH を通して、
(setq scheme-program-name "MzScheme.exe")
; を試してみてください。

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

(define-key global-map "\C-cs" 'run-scheme) ; C-c s で emacs 上で MzScheme が走るようにする

;; Emacsscheme 専用に使う時には以下を追加すると便利
(setq inhibit-startup-message t) ; 起動画面を表示しない

(run-scheme scheme-program-name) ; 起動時にいきなり scheme 処理系を走らせる

mzschemerc.ss

(current-error-port (current-output-port))

mzschemerc.ssの方はEmacs上にSchemeのエラー表示を行うためのオプション(?)です。

ちなみに、mzschemerc.ssを置くべき場所は正確にはMzScheme.exeを起動して

(find-system-path 'init-file )

と入力することで

#

とかって表示されるので、ここに表示される場所に置いとくとひとまずシアワセです。(変更できるかもしれないんですけど知らないのでまた後日(゚∀゚) )

そしたらたぶんもうScheme専用Emacsに仕立て上げられてると思うので、「runemacs.exe」からEmacs起動。(コレで起動すると後ろにcmd.exeがいなくてスッキリします)

試し撮りの画像が以下。ヘタレ感満載。

testaddっていう関数を定義して、中身は引数aと引数bの足し算をするものというヤツで。実際1+1=2な感じ。

とりあえずSchemeとかEmacsとかいろいろ並行でヤッてきます(゚∀゚)