-- Code from page 231 demonstrating overloading of -- arithmetic for overlapping types in Ada -- Kenneth C. Louden, Programming Languages -- Principles and Practice 2nd Edition -- Copyright (C) Brooks-Cole/ITP, 2003 with Text_IO; use Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; procedure overload is type Digit_Type is range 0..9; function "+"(x,y:Digit_Type) return Digit_Type is a: integer := integer(x); b: integer := integer(y); begin return Digit_Type((a+b) mod 10); end "+"; a: Digit_Type := 5+7; begin put(integer(a)); new_line; put(5+7); new_line; end overload;