[Haskell-cafe] reading and writing Data.Ratio.Rational

amindfv at gmail.com amindfv at gmail.com
Tue Mar 7 01:24:03 UTC 2017


There was a discussion recently on the list (started by me) about new versions of base parsing decimals as Rational. I think at this point someone just needs to roll their sleeves up and do it. I may be the one who ends up doing it, but don't have the bandwidth right now.

Tom


> El 6 mar 2017, a las 14:46, David Feuer <david.feuer at gmail.com> escribió:
> 
> I think your best bet is probably to get your hands dirty and parse it yourself: first grab an integer, then optionally a decimal point, etc.
> 
>> On Mar 6, 2017 3:43 PM, "Olaf Klinke" <olf at aatal-apotheke.de> wrote:
>> Ah, thanks! That is something to build on.
>> 
>> Olaf
>> > Am 24.02.2017 um 15:35 schrieb Patrick Chilton <chpatrick at gmail.com>:
>> >
>> > Prelude> import Numeric
>> > Prelude Numeric> fst $ head $ readFloat "0.1234" :: Rational
>> > 617 % 5000
>> >
>> > On Fri, Feb 24, 2017 at 1:17 PM, Olaf Klinke <olf at aatal-apotheke.de> wrote:
>> > Dear cafe,
>> >
>> > when processing text files containing numbers of the form "xxxx.yyyy" I used to parse them into Double using that type's Read instance. Obviously, even with arithmetic no more complicated than the field operations the result might have ugly rounding errors like 12.000000000002 due to the fact that numbers like 0.7 are not dyadic rationals. The math in my program is not complicated and the numbers are not large, so I don't care about Rationals having potentially huge memory footprints.
>> >
>> > So here's my question. A literal like 0.7 has type Fractional a => a, but the Read instance of Rational rejects the string "0.7". Must it be this way? Do I have to go via toRational.(read :: String -> Data.Scientific.Scientific)?
>> >
>> > Note that the documentation of Data.Scientific explicitly states that using (/) is unsafe, so I'd rather stay with the field Rational.
>> >
>> > For the output as decimal expansion, there is of course long division as described here [1], but I wonder whether either this exists in some library or there is even a more efficient solution.
>> >
>> > Any pointers are appreciated.
>> > Thanks,
>> > Olaf
>> >
>> > [1] http://stackoverflow.com/questions/30931369/how-to-convert-a-rational-into-a-pretty-string
>> > _______________________________________________
>> > Haskell-Cafe mailing list
>> > To (un)subscribe, modify options or view archives go to:
>> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> > Only members subscribed via the mailman list are allowed to post.
>> >
>> 
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170306/940363cc/attachment.html>


More information about the Haskell-Cafe mailing list