34 lines
777 B
Plaintext
34 lines
777 B
Plaintext
% \insert '../assignment1/List.oz'
|
|
|
|
declare QuadraticEquation Sum RightFold Quadratic LazyNumberGenerator TailRecursiveSum in
|
|
|
|
% task 1 a)
|
|
proc {QuadraticEquation A B C ?RealSol ?X1 ?X2} Discriminant in
|
|
Discriminant = B*B - 4.0*A*C
|
|
RealSol = Discriminant >= 0.0
|
|
if RealSol then
|
|
X1 = (~B - {Sqrt Discriminant})/(2.0*A)
|
|
X2 = (~B + {Sqrt Discriminant})/(2.0*A)
|
|
end
|
|
end
|
|
% task 1 b)
|
|
local
|
|
TestQuad = proc {$ A B C}
|
|
local RealSol X1 X2 in
|
|
{QuadraticEquation A B C RealSol X1 X2}
|
|
{System.show RealSol|[X1 X2]}
|
|
end
|
|
end
|
|
in
|
|
{System.show 'testing abc'}
|
|
{TestQuad 2.0 1.0 ~1.0}
|
|
{TestQuad 2.0 1.0 2.0}
|
|
end
|
|
|
|
|
|
% task 2
|
|
fun {Sum List}
|
|
case List of Head|Tail then Head + {Sum Tail} else 0 end
|
|
end
|
|
|