2014年12月28日日曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(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(練習問題)、9-c.(記憶域(memory store))を解いてみる。

9-c.(記憶域(memory store))

コード(Emacs)

declare
fun {NewStore}
   C Put PutList Get GetList Size SizeList in
   C={NewCell nil}
   fun {Put N X}
      C:=(N|X)|@C
      @C
   end
   fun {Get N}
      {GetList @C N}
   end
   fun {GetList L N}
      case L of H|T then
         case H of M|X then
            if M==N then X else {GetList T N} end
         end
      else nil end
   end
   fun {Size}
      {SizeList @C}
   end
   fun {SizeList L}
      case L of H|T then
         1+{SizeList T}
      else 0 end
   end
   store(put:Put get:Get size:Size)
end

fun {Put S N X}
   {S.put N X}
end

fun {Get S N}
   {S.get N}
end

fun {Size S}
   {S.size}
end

S={NewStore}
{Browse {Put S 2 [22 33]}}
{Browse {Get S 2}}
{Browse {Size S}}
{Browse {Put S 1 100}}
{Browse {Get S 1}}
{Browse {Size S}}

0 コメント:

コメントを投稿