稲葉 雅幸
人工知能プログラムを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