Gaucheでプログラミング:Gaucheでメタプログラミング(2)(2/4 ページ)
Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう(編集部)
goshコマンドを使ってみる
Gaucheのプログラムを実行するには、PerlやJavaと同じように、ファイルにプログラムを書き、コマンドの引数として実行します(Javaはコンパイルも必要ですが)。
aloha.scmファイルに以下のようなScheme(Gauche)のプログラムを書きます。
(print "Aloha!")
そしてgoshコマンドで実行するとAloha!と表示されます。
% gosh aloha.scm Aloha!
REPLで使う
goshでは、このような実行方法のほかに、goshとだけ入力することでREPL(read-eval-print loop)が使えます。ここでは、入力したScheme(Gauche)のプログラムをすぐに実行できます。
% gosh gosh> (print "Aloha!") Aloha! #<undef> gosh> (+ 1 2) 3 gosh> (exit) %
上の例では(print "Aloha!")と(+ 1 2)を実行しています。(exit)を実行するとgoshを終了します。#<undef>は(print "Aloha!")の値です。
REPLでは常に入力されたプログラムを評価(計算)した値を表示します。print関数はコンソールに表示することが目的の関数なので、関数としての値は「値がない」という意味で#<undef>となります。
このように、プログラムをファイルに書かないで直接実行できる環境は、プログラムを開発する際にちょっとしたコードの確認や関数(API)の動作確認にとても便利です。Ruby(irb)やPythonにも同様の機能があるのでなじみのある方もいると思いますが、REPLはLispの処理系が始まりです。
さて、goshのREPL機能ですが残念なことがあります。下の例のように入力したプログラムに簡単な間違いがあった場合、以前入力したプログラムは再利用できず、最初から打ち直しになってしまうのです。
% gosh gosh> (priny "Gauche") *** ERROR: unbound variable: priny Stack Trace: _______________________________________ gosh> (print "Gauche") Gauche #<undef>
Gauche-readlineのインストール
UNIXのたいていのShellでは↑(上矢印)キーを入力すると1つ前のコマンドが入力エリアに表示され、再利用できます。これと同じようなことを行える拡張モジュールとして、Gauche-readlineがあります。大変便利なのでこれをインストールしてみましょう。
手順は、Gaucheのインストールと同じです。
% wget http://www.netlab.cs.tsukuba.ac.jp/~yokota/archive/Gauche-readline-20070707.tar.gz % tar xzf Gauche-readline-20070707.tar.gz % cd Gauche-readline-20070707 % ./configure % make % make check
make checkの実行結果にpassed.が表示されればmakeは成功ですので、インストールしてください。
% sudo make install
ただし、このモジュールは素直にインストールできない場合もあります。私の使っている環境では、Mac OS X 10.5とUbuntu 8.1ではインストールできましたが、CentOS 4では上の手順だけではインストールできませんでした(Makefileのreadline_LIBSを= -lreadline -lncursesとすることでインストールできました)。
Gauche-readlineはgosh-rlというコマンド名でインストールされます。起動するとgoshと同じように使えますが、↑キーで以前に入力したコマンドを再利用できます。また、関数名の補完ができます。例えば、(priまでキー入力してTABキーを押すと、(printと補完されます。長い関数名を入力したりするのに便利です。
rlwrapを使う
どうしても、Gauche-readlineがインストールできないときは、rlwrapを使う方法があります。
rlwrapはLinuxなどのパッケージ管理システム(apt、yum、ports)でインストールできるコマンドです。もちろんrlwrapのWebサイトからソースをダウンロードしてインストールもできます。
使い方は、
% rlwrap gosh gosh>
のように起動します。すると↑キーで以前に入力したコマンドを再利用できるようになります。ただし、関数名の補完はできません。
Copyright © ITmedia, Inc. All Rights Reserved.