About TSS The following Oz code is derived from the examples provided in the book:
      "The Seasoned Schemer" by Daniel P. Friedman and Matthias Felleisen.
      http://www.ccs.neu.edu/home/matthias/BTSS/

TSS Chapter #11 Examples in Oz
% Defined in previous chapters
fun {IsZero X} X == 0 end
fun {Sub1 N} N - 1 end

%%%%%%%%%%%%%%%%%%% The Little Schemer - Chapter - 11 %%%%%%%%%%%%%%%%%%%%%%

% 11.6
fun {IsMember L A}
   case L
   of nil then false
   [] H|T then
      if A == H
         then true
         else {IsMember T A}
      end
   end
end

% 11.7
local A Lat in
   A = sardines
   Lat = ['Italian' sardines spaghetti parsley]
   {Browse 7#{IsMember Lat A}}
end

% 11.15
fun {IsFirst L A}
   case L
   of nil then false
   [] H|_ then H == A
   end
end

% 11.16
fun {TwoInARow L}
   case L
   of nil then false
   [] H|T then {IsFirst T H} orelse {TwoInARow T}
   end
end

% 11.8
local Lat in
   Lat = ['Italian' sardines spaghetti parsley]
   {Browse 8#{TwoInARow Lat}}
end

% 11.10
local A Lat in
   A = sardines
   Lat = ['Italian' sardines sardines spaghetti parsley]
   {Browse 10#{TwoInARow Lat}}
end

% 11.11
local Lat in
   Lat = ['Italian' sardines more sardines spaghetti]
   {Browse 11#{TwoInARow Lat}}
end

% 11.22
fun {TwoInARow_1 L}
   case L
   of nil then false
   [] H|T then {IsFirstB T H}
   end
end
fun {IsFirstB L A}
   case L
   of nil then false
   [] H|T then H == A orelse {TwoInARow_1 L}
   end
end

% 11.29
fun {TwoInARowB L Preceding}
   case L
   of nil then false
   [] H|T then H == Preceding orelse {TwoInARowB T H}
   end
end

% 11.33
fun {TwoInARow_2 L}
   case L
   of nil then false
   [] H|T then {TwoInARowB T H}
   end
end

% 11.35
local Lat in
   Lat = [b d e i i a g]
   {Browse 35#{TwoInARow_2 Lat}}
end

% 11.36
local Lat in
   Lat = [d e i i a g]
   {Browse 36#(nil == Lat)}
end

% 11.37
local Lat Preceding in
   Preceding = b
   Lat = [d e i i a g]
   {Browse 37#(Lat.1 == Preceding)}
end

% 11.55
fun {SumOfPrefixesB Tup Sonssf}
   case Tup
   of nil then nil
   [] H|T then (Sonssf + H) | {SumOfPrefixesB T Sonssf+H}
   end
end

% 11.62
fun {SumOfPrefixes Tup}
   {SumOfPrefixesB Tup 0}
end

% 11.44
local Tup in
   Tup = [2 1 9 17 0]
   {Browse 44#{SumOfPrefixes Tup}}
end

% 11.45
local Tup in
   Tup = [1 1 1 1 1]
   {Browse 45#{SumOfPrefixes Tup}}
end

% 11.77
% fun {Pick L N} {Nth L N} end
fun {Pick L N}
   case L
   of H|T then
      if {IsZero {Sub1 N}}
         then H
         else {Pick T {Sub1 N}}
      end
   end
end

% 11.78
fun {ScrambleB Tup RevPre}
   case Tup
   of nil then nil
   [] H|T then {Nth H|RevPre H} | {ScrambleB T H|RevPre}
   end
end

% 11.84
fun {Scramble Tup}
   {ScrambleB Tup nil}
end

% 11.66
local Tup in
   Tup = [1 1 1 3 4 2 1 1 9 2]
   {Browse 66#{Scramble Tup}}
end

% 11.67
local Tup in
   Tup = [1 2 3 4 5 6 7 8 9]
   {Browse 67#{Scramble Tup}}
end

% 11.68
local Tup in
   Tup = [1 2 3 1 2 3 4 1 8 2 10]
   {Browse 68#{Scramble Tup}}
end

% 11.75
local N Lat in
   N = 4
   Lat = [4 3 1 1 1]
   {Browse 75#{Nth Lat N}}
end

% 11.76
local N Lat in
   N = 2
   Lat = [2 4 3 1 1 1]
   {Browse 76#{Nth Lat N}}
end

Chris Rathman / Chris.Rathman@tx.rr.com