構成的アルゴリズムに対する Javaプログラムの生成

構成的アルゴリズムに対する
Javaプログラムの生成
数理7研
00669
村上 拓真
研究の目的と背景
変換システムの作成
構成的アルゴリズム
 関数型プログラム


プログラム変換
オブジェクト指向
 手続き型プログラム


実行速度
データの変換
関数プログラム
Javaコード
整数
Integerクラス
論理値
Booleanクラス
リスト
Listクラス
関数の変換
一般の関数
関数プログラム
Javaコード
(+ 5 2)
Func_Plus.apply(5,2);
基本関数

リストクラスのメソッド
基本関数の変換
関数プログラム
Javaコード
(fold + list)
list.fold(Func_Plus);
fold・・・リストをたたみ込む
(fold + [a,b,c,d])
= a+b+c+d
for(i=0;i<n-1;i++){
x=list[i]+list[i+1];
}
esum関数(1)
(defun esum (list)
(if (null list)
0
(let ((x (head list))
(xs (tail list)))
(if (even x)
(+ x (esum xs))
(esum xs)))))
esum関数(2)
(defun esum (list)
(fold + (filter even list)))
1.
2.
リストから偶数の要素を選び(filter even)
値を合計する(foldr +)
esum関数の実行時間
250
実行時間[ms]
200
150
esum(1)
esum(2)
100
50
0
50
150
250
350
リストの長さ
450
本研究の成果
 自動的な変換を実現
 Java版インタープリタ
 基本関数の最適化