研究課題/領域番号 |
19K20248
|
研究機関 | 国立情報学研究所 |
研究代表者 |
対馬 かなえ 国立情報学研究所, アーキテクチャ科学研究系, 特任助教 (80754663)
|
研究期間 (年度) |
2019-04-01 – 2023-03-31
|
キーワード | 型エラー / デバッグ / 関数型言語 |
研究実績の概要 |
本年度は、(1) 自動修正を行うための型情報を得る手法の導入、(2) 型エラープログラムの自動修正にむけたプログラム合成の二点について研究を行った。 プログラムの自動修正を行うためには、どこが修正箇所である可能性があり、どのように修正すべきかという型の情報を得る必要がある。そのため、(1) では、既存の型推論器を使用して、OCaml 等の言語に備わっている型エラーメッセージのような矛盾する型を、複数組示す手法について研究を行った。言語に元々実装されている既存の型推論器をそのまま使用するだけでは、矛盾する型は一組しか見つけることができない。既存研究では新たに複雑な型推論を行う型推論器を実装する必要があり、コストがかかってしまう点が問題であった。そこで、型エラーのプログラムに対して一部分を変数に置き換え、型のつくプログラムにすることで、型の情報を得る手法を提案した。それにより、自動修正を行うために必要な型情報を容易に得ることができるようになった。 (2) 型エラープログラムの自動修正にむけたプログラム合成では、Relational programming を用いたプログラム合成を実装した。加えて、型情報を使用することで、速度の改善が見られないかの実験を行なったが、残念ながらほぼ改善はされなかった。これは Relational programming ではバックトラックした際に、既に型のような情報を使用しているからであると考えられる。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本年度は、(1) で自動修正を行うために必要な型情報を得る手法の確立を、(2) で型エラープログラムの自動修正にむけたプログラム合成器の実装を行うことができた。これらを組み合わせることで、型エラーのあるプログラムを修正するために、型の合う部分的なプログラムを生成することができる。これは本研究課題の最終的な目的を達成するために基盤となる部分であるため、おおむね順調に進展していると考えられる。
|
今後の研究の推進方策 |
まず、(1) と (2) を組み合わせることで、型の合う部分的なプログラムを自動生成する。そのままでは実用的な速度では実行できない可能性が高いため、データに応じた最適化を導入する。
|
次年度使用額が生じた理由 |
家庭の事情により、本年度はほぼ出張等ができなかった。次年度以降の成果発表や共同研究のための出張に使用する予定である。
|