2014年12月23日火曜日

開発環境

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

コード(Emacs)

declare GenericPascal ShiftLeft ShiftRight OpList Sub Mul Mull in
fun {GenericPascal Op N}
   if N==1 then [1]
   else L in
      L={GenericPascal Op N-1}
      {OpList Op {ShiftLeft L} {ShiftRight L}}
   end
end

fun {OpList Op L1 L2}
   case L1 of H1|T1 then
      case L2 of H2|T2 then
         {Op H1 H2}|{OpList Op T1 T2}
      end
   else nil end
end

fun {ShiftLeft L}
   case L of H|T then
      H|{ShiftLeft T}   
   else [0] end
end

fun {ShiftRight L} 0|L end

fun {Sub X Y} X-Y end

fun {Mul X Y} X*Y end

fun {Mull X Y} (X+1)*(Y+1) end

for I in 1..10 do {Browse {GenericPascal Sub I}} end

for I in 1..10 do {Browse {GenericPascal Mul I}} end

for I in 1..10 do {Browse {GenericPascal Mull I}} end

0 コメント:

コメントを投稿