On Jul 12, 2007, at 4:40 , Bayley, Alistair wrote:

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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] [EMAIL PROTECTED]
system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED]
electrical and computer engineering, carnegie mellon university    KF8NH


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to