7.4.1 Library Style

We can implement bag abstract data structures through cells and lists. This is more efficient than using stacks for the same purpose.

<BagLib.oz>=
functor 
export 
   new     : NewBag
   fromList: ListToBag
   Put ToList Member
define 
   fun {NewBag}{Cell.new nil} end 
   fun {ListToBag L} {Cell.new L} end 
   proc{Put B X} L in {Exchange B L X|L} end 
   fun {ToList B} {Access B} end 
   fun {Member B X} {List.member X {ToList B}} end  
end


Denys Duchier, Claire Gardent and Joachim Niehren
Version 1.3.99 (20050412)