Chapter #7 Examples in Oz
% Defined in previous chapters
fun {EqInt X Y} X == Y end
%%%%%%%%%%%%%%%%%%% Chapter - 7 %%%%%%%%%%%%%%%%%%%%%%
% 7.1
fun {Identity X} X end
% 7.5
fun {TrueMaker X} true end
% 7.7
{Browse 7#hot(true)}
% 7.9
{Browse 9#cold(10)}
% 7.10
{Browse 10#cold(5)}
% 7.11
fun {HotMaker X} hot end
% 7.20
fun {Help F}
hot(
{TrueMaker
if {TrueMaker 5}
then F
else TrueMaker
end})
end
% 7.47
fun {Ints N}
link(N+1 Ints)
end
% 7.51
{Browse 51#{Ints 0}}
% 7.53
{Browse 53#{Ints 5}}
% 7.54
{Browse 54#{Ints 13}}
% 7.55
{Browse 55#{Ints 50005}}
% 7.58
fun {Skips N}
link(N+2 Skips)
end
% 7.59
{Browse 59#{Skips 8}}
% 7.60
{Browse 60#{Skips 17}}
% 7.61
fun {DividesEvenly N C}
{EqInt (N mod C) 0}
end
fun {IsMod5or7 N}
if {DividesEvenly N 5}
then true
else {DividesEvenly N 7}
end
end
% 7.62
fun {SomeInts N}
if {IsMod5or7 N+1}
then link(N+1 SomeInts)
else {SomeInts N+1}
end
end
% 7.63
{Browse 63#{SomeInts 1}#{SomeInts 17}#{SomeInts 116}}
% 7.66
{Browse 66#{Ints 0}}
% 7.67
{Browse 67#{Ints 1}}
% 7.68
{Browse 68#{Ints 2}}
% 7.71
{Browse 71#{SomeInts 0}}
% 7.72
{Browse 72#{SomeInts 5}}
% 7.76
fun {ChainItem N link(I F)}
if {EqInt N 1}
then I
else {ChainItem N-1 {F I}}
end
end
% 7.84
{Browse 84#{ChainItem 1 {SomeInts 0}}}
{Browse 84#{ChainItem 6 {SomeInts 0}}}
{Browse 84#{ChainItem 37 {SomeInts 0}}}
% 7.94
fun {IsPrime N}
fun {HasNoDivisors N C}
if C == 1
then true
else
if {DividesEvenly N C}
then false
else {HasNoDivisors N C-1}
end
end
end
in
{HasNoDivisors N N-1}
end
% 7.90
{Browse 90#{IsPrime 3}}
% 7.91
{Browse 91#{IsPrime 81}}
% 7.96
fun {Primes N}
if {IsPrime N+1}
then link(N+1 Primes)
else {Primes N+1}
end
end
% 7.96
{Browse 96#{ChainItem 12 {Primes 1}}}
% 7.98
fun {Fibs N}
fun {$ M}
link(N+M {Fibs M})
end
end
% 7.106
{Browse 106#link(0 {Fibs 1})}
% 7.109
fun {Fibs_1 M}
link(1+M {Fibs M})
end
% 7.112
{Browse 112#{{Fibs 1} 1}}
% 7.114
{Browse 114#{Fibs_1 1}}
% 7.115
{Browse 115#{Fibs_1 2}}
% 7.116
fun {Fibs_2 M}
link(2+M {Fibs M})
end
|