- 著者
-
高野 保真
岩崎 英哉
佐藤 重幸
- 出版者
- 日本ソフトウェア科学会
- 雑誌
- コンピュータ ソフトウェア (ISSN:02896540)
- 巻号頁・発行日
- vol.32, no.1, pp.1_253-1_287, 2015-01-26 (Released:2015-02-11)
関数型言語 Haskellは,遅延評価を標準とするプログラミング言語であり,近年注目を集めている.デファクトスタンダードの処理系である Glasgow Haskell Compiler(GHC)は多くの研究の基盤として用いられ,新しい言語概念など先進的な研究成果が取り入れられている.その一方で,GHCの実装は巨大で複雑になってきており,GHCに新機能を導入することは障壁が高くなってしまった.このような状況において,我々は実行時メモリの効率化を目指して,遅延オブジェクトを再利用する手法を提案し,GHCに実装してきた.我々が提案した手法は,コンパイル時にプログラム変換を行い,再利用対象とする遅延オブジェクトへの参照を単一にした上で,遅延オブジェクトを破壊的に書き換えて再利用する.その基本的な機構は既に先行論文において述べ,メモリ削減の効果も確認済みである.本論文は,再利用手法を実現するために考えられる各種手法の実装方法,および,それらの手法の得失・取捨選択に関する議論を詳細に行う.また,再利用手法の基本的な機構の実装で培った経験を生かし実装した,再利用手法の改善技法をいくつか提案する.それらの技法を導入することにより,実行時間に関するオーバヘッドを低く抑えることが可能であることを実験により確認した.最後に,GHCを研究の基盤に用いた経験より得られた遅延型関数型言語処理系に関する知見についても述べる.特に,GHCが Haskellで記述されていることは,処理系の拡張性に大きく貢献していることが分かった.