Joshua Juran wrote:
scalar number (possibly complex) real rational integer Integer BigInt Ratio Float Complex Quaternion String ...
Trying to fit every problem into a rigid inheritance tree is perhaps the failure of the strict Class-based Object Oriented paradigm; that is, if you count multiple inheritance and interfaces as afterthoughts rather than the intent of Class-based Inheritance. With reference to this Venn diagram: http://svn.openfoundry.org/pugs/ext/Perl-MetaModel/docs/number-types.png Here are the corresponding Rule descriptions; structure stolen from Haskell; role Num; role Real does Num; role Fractional does Num; role Integral does Real; class Int does Integral; class int does Integral; # unboxed... role RealFrac does Real does Fractional; class Rational does RealFrac; class IntRatio does RealFrac; role Floating does Fractional; role RealFrac does Floating; role RealFloat does RealFrac does Floating; class Float does RealFloat; class Double does RealFloat; class ComplexFloat does Floating; class ComplexDouble does Floating; I would suggest this as a good starting point. One thing that Haskell is good at is math. Sam.