with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Text_IO; use Ada.Text_IO;
procedure functionRecords is
type Pair is record
x: Integer;
y: Integer;
end record;
procedure putPair(p: Pair) is
begin
put(p.x);
put(p.y);
new_line;
end putPair;
-- Adds two pairs to produce a new pair
-- Overloads the operator plus with an additional meaning
-- Returns a pair
-- Can you write this function with only one statement?
function "+"(a, b: Pair) return Pair is
answer: Pair;
begin
answer.x := a.x + b.x;
answer.y := a.y + b.y;
return answer;
end "+";
p1: Pair := (1, 2);
p2: Pair := (2, 4);
p3: Pair;
begin
p3 := "+"(p1, p2);
putPair(p3);
p1 := p1 + p1;
putPair(p1);
if p1 = p2 then
put_line("Same");
else
put_line("Different");
end if;
end functionRecords;
-- Output
-- 3 6
-- 2 4
-- Same