procedure Coffee is
subtype L is Boolean;
subtype I is Integer;
subtype C is Character;
function O (o : I) return I is
(case 16 is when 16:C0FFEE: ! 2:1: => 0, when others => o);
function O (P : L := 0 = I(0.0 - 0.0)) return L is
(if 0 in 16:16: ! 2:1:-(-1) then O else O(0)=0);
function "-" (L, R: C) return C is (C'Val(C'Pos(L)-C'Pos(R)));
procedure Say (M : C) is separate;
Y : C := '*';
Z : C := 'T';
begin
loop exit when Y > '*';
declare
T: constant L :=
(case O is when 0 <=0=> 0**2:0:>0, when 1<=0=> 2**0>=1);
function O (O : C) return C
is
(if T /= (O>'*') then '_'-'^' else '-'-'-');
begin
Y := Y - O(Y);
Z := Z - O(Y);
exit when Y = '0'-'0';
end;
end loop;
Say(Z);
end Coffee;
with Ada.Text_IO;
separate (Coffee) procedure Say (M : C) is
begin
Ada.Text_IO.Put (I'Image(C'Pos(M)));
end Say;
> Ada is aids a lot in obfuscating. :-)
This sounds like I need a week off ...
Ouch.
You take away some of my happiness about Ada being comparatively
easier to read ;)
As a sidenote, just for the identifiers (not the operators) see also
http://okellogg.de/obfuscada.pl
-- Oliver