2015年1月21日水曜日

開発環境

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

10.(核言語への展開)

コード(Emacs)

declare SMerge
% データ構造の中での呼び出しの翻訳注意
SMerge= proc {$ Xs Ys ?R}
           case Xs of nil then R=Ys
           else
              case Ys of nil then R=Xs
              else
                 case Xs of X|Xr then
                    case Ys of Y|Yr then
                       if X=<Y then
                          local Rt in
                             R=X|Rt
                             {SMerge Xr Ys Rt}
                          end
                       else
                          local Rt in
                             R=Y|Rt
                             {SMerge Xs Yr Rt}
                          end
                       end
                    end
                 end
              end
           end
        end
% 末尾再帰手続きであることが確認できた        

{Browse {SMerge [2 3 5 7] [1 4 6 8 9 10]}}

0 コメント:

コメントを投稿