構成的アルゴリズムに対する 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版インタープリタ 基本関数の最適化
© Copyright 2025 ExpyDoc