研究課題/領域番号 |
16700029
|
研究種目 |
若手研究(B)
|
配分区分 | 補助金 |
研究分野 |
ソフトウエア
|
研究機関 | 東北大学 (2005-2006) 北陸先端科学技術大学院大学 (2004) |
研究代表者 |
篠埜 功 東北大学, 電気通信研究所, 助手 (10362021)
|
研究期間 (年度) |
2004 – 2006
|
研究課題ステータス |
完了 (2006年度)
|
配分額 *注記 |
2,300千円 (直接経費: 2,300千円)
2006年度: 700千円 (直接経費: 700千円)
2005年度: 700千円 (直接経費: 700千円)
2004年度: 900千円 (直接経費: 900千円)
|
キーワード | プログラム変換 / 融合変換 / プログラム導出 / 線形時間アルゴリズム / 動的計画法 / XML / 問い合わせ言語 / 機械的導出 / regularデータ型 |
研究概要 |
一般にプログラム変換において、データ型毎に変換規則を用意する必要がある。プログラム変換の代表的な例として融合変換があるが、これまで融合変換の研究では、各データ型毎に規則を用意するか、または関手を用いてさまざまなデータ型規則を統一的に記述すると言うことが行われてきた。これに対し、融合変換に、プログラム変換において最も基本的な、関数定義の展開を用いる新たな関数融合方式を提案した(ACM POPL 2007)。この手法では、データ型にかかわらず適用可能な関数の展開を用いるため、データ型ごとに融合規則を用意する必要がなく、また、適用対象の関数定義に特定の形を要求しないため、ユーザー定義の関数が適用対象となる。新たな関数融合方式の核となる考え方は、融合対象の関数をf、gとすると、新しい関数hx=f(gx)を定義し、f、gの定義による展開、簡約など、意味を保つ変換を行い、f、gの連続適用が現れた部分をhで置き換えるというものである。この置き換えを行う規則をfixed point promotion規則として定義した。この変換を行う規則をapply distribution規則として定義した。これらの規則は、複数引数関数の場合にも自然に拡張され、カリー化されている場合にもされていない場合にも成り立つ。提案した新たな規則に基づいて、プログラム(関数定義が1etで入れ子になっている場合)を受け取り融合を行うアルゴリズムを設計し、SML#コンパイラの中間言語上に試験的に実装した。典型的な例で融合変換が成功し、メモリー使用料が半分程度、実行時間が6-8割程度にまで削減され、コード量が数パーセント程度増加する場合もあるという程度である。
|