2015年3月11日水曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)(セイフ・ハリディ (著)、ピーター・ヴァン・ロイ (著)、Peter Van-Roy (著)、 Seif Haridi (著)、羽永 洋 (翻訳) 、翔泳社、原書: Concepts, Techniques, and Models of Computer Programming(CTM))の第部(一般的計算モデル)、第3章(宣言的プログラミング技法)、3.10(練習問題)、13.(行列操作)を解いてみる。

13.(行列操作)

コード(Emacs)

declare T Mul
fun {T Xs}
   fun {Add Xs Ys}
      case Xs
      of nil then Ys
      [] X|Xr then
         case Ys
         of nil then [X]|{Add Xr Ys}
         [] Y|Yr then (X|Y)|{Add Xr Yr}
         end
      end      
   end
in   
   case Xs
   of nil then nil
   [] X|Xr then {Add X {T Xr}}
   end   
end

fun {Mul Xs Ys}
   fun {Add Xs Ys}
      case Xs
      of nil then 0
      [] X|Xr then
         case Ys
         of Y|Yr then X*Y+{Add Xr Yr}
         end
      end
   end
   fun {Row Xs Ys}
      case Ys
      of nil then nil
      [] Y|Yr then {Add Xs Y}|{Row Xs Yr}
      end
   end
in
   case Xs
   of nil then nil
   [] X|Xr then {Row X {T Ys}}|{Mul Xr Ys}
   end   
end


{Browse {T [[1 2 3]
            [4 5 6]]}}
{Browse {Mul [[1 2 3]
              [4 5 6]]
             [[1 2]
              [3 4]
              [5 6]]}}

0 コメント:

コメントを投稿