著者
山本 晃成 湯淺 太一
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.42, no.11, pp.37-51, 2001-11-15

プログラミング言語の中には末尾再帰の最適化と一級継続を必須としているものがある.たとえばScheme ,Standard ML や他の関数型言語のほとんどがその機能を必要としている.これらの言語は,末尾再帰の効率によるところが大きく,また,継続が操作可能であることが言語の重要な特色でもある.しかし,Java 仮想マシン(JVM )上で末尾再帰の最適化と一級継続を実現することは困難である.これはJVM の仕様がそれらを実現するための機構を十分に提供していないことが要因である.実際に,JVM のバイトコードを出力する様々なコンパイラが実装されているにもかかわらず,JVM の制限のために,言語が要求する完全な機能を実現できていないものが少なからず存在する.そこで,JVM で末尾再帰の最適化と一級継続を実現するために,いくつかのバイトコード命令とその実行を補うためのクラスを拡張することを検討する.様々な拡張方法や実現方法が考えられるが,JVM の基本設計は可能な限り尊重し,最低限の拡張でかつ効果的にこれらの機能を実現可能にすることを目標とする.There are several programming languages that require tail recursion optimization and first-class continuations.Scheme,Standard ML,and several other mostly functional languages require these features.These languages rely heavily on the efficiency of tail recursion,and the ability of controlling continuationsisone of the important features.However, it is difficult to implement tail recursion optimization and first-class continuations on the Java Virtual Machine (JVM),because the JVM specification does not provide features to realize them. Although variouscompilersare implemented that produce JVM byte code,some of them cannot realize full language features because of the restriction of the JVM specification.In this research, we propose byte code extensions and classes to support their execution to realize tail recursion optimization and first-class continuations on the JVM.Although there are various ways to extend it and implement them,we aim at having respect for the basic design of the JVM as far as possible and realizing them efficiently with minimum extensions.