package Geometry is
    -- ignoring private for simplicity

    type Shape is ABSTRACT TAGGED record
        x, y: float;
    end record;

    function area(s: Shape) return float is ABSTRACT;
end Geometry;