Courses/CS 460/Fall 2005/Homework/Sean Tseng/Oct 1

From CSWiki

Jump to: navigation, search

Contents


[edit] Homework 1

[edit] Max

declare Max X Y M in
proc {Max L1 ?MaxOut}
   case L1 of
      nil then MaxOut=nil
   [] (X1|nil) then
      MaxOut=X1
   [] (X1|X2|Xr) then
      if X1 < X2 then
	 {Max (X2|Xr) MaxOut}
      else
	 {Max (X1|Xr) MaxOut}
      end
   end
end

X = nil
{Max X M}
{Browse M}

[edit] Reverse (presented in class)

declare Reverse L1 L2 in
   proc {Reverse Lin ?Lout}
      case Lin of
         nil then Lout=nil     
         [] (X1|Xr) then
         Y in
            Lout = Y|X1
            {Reverse Xr Y}
      end
   end
L1 = [4 7 8 6 1]
{Reverse L1 L2}
{Browse L1}
{Browse L2}

[edit] Length

declare Length X Y in
proc {Length L ?Len}
   case L of
      nil then Len=0
      [] (_|X3) then
         Len = 1 + {Length X3}
   end
end
X = [3 4 5]
{Length X Y}
{Browse Y}