
David Benbennick wrote:
On 10/10/07, Dan Weston
wrote: Actually, it is a constant: piDecimalExpansion :: String.
Where is this constant defined?
A translation from piDecimalExpansion :: String to pi :: Floating a => a is already well defined via read :: Read a => String -> a
Any definition of pi in the Floating class that differs from (read piDecimalExpansion) is erroneous. I propose the above as the default definition of pi.
piDecimalExpansion, if defined, would be an infinite length string.
It would need to be added. The fact that it has infinite length is no problem. It is countable infinite, and algorithms exist to compute this lazily.
The expression
read $ "0." ++ repeat '1' :: Double
is Bottom. So even if you had piDecimalExpansion, it isn't clear how to use that to define pi.
Ouch. Why is that bottom? Any finite dense numeric type can depend on only a finite number of digits.