Arlen:
Rational doesn't support BigInt because the necessary math
functions do not
support BigInt. And if you are going to have Rational support
BigInt, you
are most likely going to need BigFloat, which is something we
don't have.
I have used Rationals with BigInts several times, and so far I
didn't need bigfloats...
I personally do not like BigInt because it is incomplete, and
because it is
reinventing the wheel. I much rather see Phobos provide an
interface to
GMP, MPFR, or some other arbitrary precision arithmetic
library, similar to
what you see with Haskell and Python.
CPython defines its own multi-precision numbers.
But I have not yet understood why D isn't using GMP as Haskell
does. Maybe Don knows this answer.
In theory Open Source is meant to give a huge help to code reuse,
in practice you see wheel reinvention all the time. D should use
bigints from GMP, a garbage collector developed in conjunction
with Rust and Mono developers, the back-end (that supports 32 bit
Windows exceptions) on LLVM, etc.
Thankfully Phobos uses Curl :o)
Bye,
bearophile