
On Jul 12, 2007, at 4:40 , Bayley, Alistair wrote:
From: haskell-cafe-bounces@haskell.org [mailto:haskell-cafe-bounces@haskell.org] On Behalf Of Simon Michael
Is there a type or library out there that's good for representing money and other quantities while avoiding rounding errors ?
I think Data.Fixed would be a good choice:
http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data- Fixed.ht ml
I don't know /exactly/ how you'd go about adding a Money data type; I guess you'd have something like:
data E2 = E2 instance HasResolution E2 where resolution _ = 100 type Money = Fixed E2
I was playing with that when your message came in:
mress:5003 Z$ cat foo.hs import Data.Fixed
data E2 = E2 instance HasResolution E2 where resolution _ = 100 type Money = Fixed E2
mress:5004 Z$ ghci foo.hs ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.7.20070322, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help.
Loading package base ... linking ... done. [1 of 1] Compiling Main ( foo.hs, interpreted ) Ok, modules loaded: Main. *Main> :m +Data.List *Main Data.List> let l = [1.25 :: Money,2.00,4.46,12.80,1.15,6.00] in sum l / genericLength l 4.61
That what you want? -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH