There are math functions in the `calc' package that give you
arbitrary precision and bignums. The info says you can use it from
lisp programs, it sounds like it was designed with that in mind.
I guess it uses lists to hold numbers, represented in base-1000.