[Haskell-cafe] Request for Comments - hscurrency 0.0.1
mxcantor at gmail.com
Sun Aug 16 09:55:28 EDT 2009
@Jason I'm not sure what you mean about exposing the type
information. Unless you mean that each currency would be a separate
type somehow. While this is a similar problem to the dimensional
issue, the problem is that the FX rates are changing all the time.
While the conversion between a meter and a foot is always constant,
with FX rates thats not the case. So 2ft + 3m is always a well
defined value but something like USD 1 + JPY 1 gives a function of the
USDJPY exchange rate, not a constant value.
@ Antoine I'll add some comments. you're right that doubles are not
typically used nor would they be in a finished product. for the time
being, however, I dont know if its better to use Ratio's, Fixed's or
what, so just settled on the most straightforward for now.
On Aug 16, 2009, at 1:26 AM, Jason Dagit wrote:
> On Sat, Aug 15, 2009 at 5:15 AM, Max Cantor <mxcantor at gmail.com>
> Hi all,
> I'm putting together some simple tools to do safe calculations on
> different currencies. For instance, making sure that you dont add
> something like 5 USD + 10 JPY without doing a proper conversion.
> I've put up some code on google code which probably explains what
> I'm trying to do more succinctly than this email. I'm curious what
> poeple think about the library, its the first haskell code I've
> written for the purpose of sharing and I intend to add it to hackage
> once I finalize the interface a bit more.
> The code is at: http://bit.ly/1Cjjlj
> I'm very open to suggestions on improving the interface. RIght now
> its very simple and straightforward but potentially limited.
> Right now it looks like you have taken the approach of embedded
> domain specific language. You have not exposed the currency units
> to the type system. Therefore you rely on the rules of your
> embedded language to do proper conversions.
> Have you considered exposing the type information to the type
> checker? A similar question came up recently on a Portland
> functional programming mailing list and my reply can be found here:
> The experimental code which resulted is here:
> You may also want to look at the dimensional package:
More information about the Haskell-Cafe