Courses/CS 460/Fall 2005/Homework/Andre Liv/Nov 19

From CSWiki

Jump to: navigation, search

[edit] Homework 8

This code does not compile, don't know how to fix it and need to work furthermore on it

local
   proc {CreateJug Size Amount Jug}
      Jug = {MakeRecord jug [size amount]}
      Jug.size = size
      Jug.amount = Amount
   end
   
   proc {Fill Jug NewJug}
      NewJug = {CreateJug Jug.size Jug.size}
   end

   proc {Empty Jug NewJug}
      NewJug = {CreateJug Jug.size 0}
   end

   proc {Pour Jug1 Jug2 NewJug NewJug1}
      choice
         NewJug = [{Create Jug1.size (Jug1.amount + Jug2.size)}]
      []
         NewJug1 = [{CreateJug Jug2.size Jug2.size}]
      end
   end



   fun {Start J J1 States NewJug}
	 NewJug = [{Fill J} J1] 
   end
   
   proc {Append Xs Ys Zs}
      choice
	 Xs = nil Ys = Zs
      [] X Xr in
	 Xs = X | Xr
	 Zs = X | {Append Xr Ys}
      end
   end

   fun {Goal}
      {Start [[{CreateJug 3 0} {CreateJug 5 0}]] 4}
   end
   
in
   {Browse {SearchAll Goal}}
end