研究業績リスト
ジャーナル論文 - rm_misc: Introduction Scientific Journal
教科「情報」の入学試験問題って?:うふうふふ~2025年度共通テスト「旧情報関係基礎」第1問 問3
公開済 11/2025
情報処理, 66, 12, e31 - e45
ジャーナル論文 - rm_misc: Introduction Scientific Journal
公開済 09/2025
情報処理, 66, 10, 456 - 450
ジャーナル論文 - rm_published_papers: International Conference Proceedings
Controlling Computation Granularity through Fusion in Improving Floating-Point Numbers
公開済 28/08/2024
Proceedings of the 17th ACM SIGPLAN International Haskell Symposium, 83 - 96
ジャーナル論文 - rm_misc: Introduction Scientific Journal
公開済 01/2024
情報処理, 65, 2, e6 - e9
ジャーナル論文 - rm_misc: Introduction Scientific Journal
公開済 10/2022
情報処理, 63, 11, e34 - e52
ジャーナル論文 - rm_misc: Introduction Scientific Journal
ぺた語義:全国大会イベント「2025年実施の大学情報入試への展望」の報告
公開済 15/08/2021
情報処理, 62, 9, 490 - 494
ジャーナル論文 - rm_published_papers: Scientific Journal
公開済 15/02/2019
Journal of Information Processing, 27, 177 - 189
図書
公開済 14/03/2016
ジャーナル論文 - rm_misc: Introduction Other
公開済 08/2011
コンピュータソフトウェア, 28, 3, 70 - 75
ジャーナル論文 - rm_published_papers: Scientific Journal
L-Closureを用いた真に末尾再帰的なSchemeインタプリタ
公開済 12/2010
情報処理学会論文誌 プログラミング, 3, 5, 1 - 17
Scheme処理系は真に末尾再帰的であることが要求されており,アクティブな末尾呼び出しの数に制限がない場合もサポートしなくてはならない.Clingerは真の末尾再帰の形式的定義の1つを空間効率の点から与えており,その定義に従えば,末尾呼び出しの最適化(末尾呼び出しをトランポリンなどによりジャンプに置き換えて実装する方法)だけでなく,BakerのCPS(継続渡しスタイル)変換を用いたC言語におけるSchemeの実装手法も,真に末尾再帰的と分類できる.Bakerの実装手法は,CPS変換された末尾呼び出しにおいて新たな継続を生成せず,C言語の実行スタックに対してもごみ集めを行うため,空間効率が良い.本論文では拡張C言語による真に末尾再帰的なSchemeインタプリタの実装手法を提案する.本手法はCPS変換を用いず,Cの実行スタックがあふれそうになれば,残りの計算に必要な"Frame"オブジェクトのみを含むリストとして表現された空間効率の良い一級継続を生成し,すぐさまその継続を呼び出すというアイディアに基づく.ごみ集めや継続のキャプチャにおいては,実行スタックに合法的にアクセスできる,つまりデータ構造や変数の値としてアクセスできるL-closureという言語機構を用いている.ベースとなるSchemeインタプリタは,Javaアプリケーション組み込み用LispドライバであるJAKLDをもとにC言語で再実装されたものとした.Implementations of Scheme are required to be properly tail-recursive and to support an unbounded number of active tail calls. Clinger proposed a formal definition of proper tail recursion based on space efficiency. The definition covers systematic tail call optimization, where every tail call is converted to a jump (with an optional trampoline), as well as Baker's implementation of Scheme in the C language with CPS (continuation-passing style) conversion. Baker's implementation is space-efficient, since no new continuation is created on a CPS-converted tail call and garbage is collected even on C's execution stack. We propose techniques to implement a properly tail-recursive Scheme interpreter in an extended C language. Our approach does not convert a program into CPS. The key idea is to avoid stack overflow by creating a space-efficient first-class continuation represented as a list containing only the "Frame" objects necessary for the rest of computation and immediately invoking the continuation. We use a language mechanism called "L-closures" to access the contents of the execution stack as values of legal data structures and variables for implementing garbage collection and capturing continuations. This research is based on a Scheme interpreter which is developed in the C language by referring to an existing Lisp driver called JAKLD that is intended to be embedded in Java applications.