稲葉 雅幸
人工知能プログラムをLispで記述した本 ``Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'' (MIT Press, ISBN 1-55860-191-0, 1992) の著者で有名なPeter Norvig(http://www.norvig.com/) は,Javaで記述したScheme言語インタプリタJschemeを 作りました.(JschemeはもともとSilkという名前でしたが 名前がJschemeに変わりました.) http://www.norvig.com/jscheme.htmlに,その説明とプログラム環境を ダウンロードすることができます.inaba@jsknote> java jscheme.Scheme > (car '(a b c)) a > (exit)
~/lecture/soft402> jar tvf jscheme.jar
0 2002 META-INF/
67 2002 META-INF/MANIFEST.MF
0 2002 jscheme/
952 2002 jscheme/Closure.java
435 2002 jscheme/Continuation.java
3284 2002 jscheme/Environment.java
5980 2002 jscheme/InputPort.java
3176 2002 jscheme/JavaMethod.java
1145 2002 jscheme/Macro.java
1940 2002 jscheme/Pair.java
31178 2002 jscheme/Primitive.java
4398 2002 jscheme/primitives.scm
591 2002 jscheme/Procedure.java
5225 2002 jscheme/Scheme.java
5530 2002 jscheme/SchemePrimitives.java
10293 2002 jscheme/SchemeUtils.java
~/lecture/soft402> wc jscheme/*.*
28 131 952 jscheme/Closure.java
17 53 435 jscheme/Continuation.java
100 461 3284 jscheme/Environment.java
210 880 5980 jscheme/InputPort.java
88 373 3176 jscheme/JavaMethod.java
33 137 1145 jscheme/Macro.java
64 278 1940 jscheme/Pair.java
721 3442 31178 jscheme/Primitive.java
20 77 591 jscheme/Procedure.java
152 696 5225 jscheme/Scheme.java
158 718 5530 jscheme/SchemePrimitives.java
314 1530 10293 jscheme/SchemeUtils.java
146 534 4398 jscheme/primitives.scm
2051 9310 74127 total
% java jscheme.Scheme
> (car '(a b c))
a
> (exit)
というぐあいに,jschemeディレクトリにjscheme.jarを
jarコマンドにより展開して javacでコンパイルします.
~/lecture/soft402/jscheme> which javac /java/jdk1.4/bin/javac ~/lecture/soft402/jscheme> javac *.java ~/lecture/soft402/jscheme> ls Closure.class JavaMethod.java Scheme.class Closure.java Macro.class Scheme.java Continuation.class Macro.java SchemePrimitives.class Continuation.java Pair.class SchemePrimitives.java Environment.class Pair.java SchemeUtils.class Environment.java Primitive.class SchemeUtils.java InputPort.class Primitive.java primitives.scm InputPort.java Procedure.class JavaMethod.class Procedure.java