[Haskell-cafe] Request for Comments - hscurrency 0.0.1
Max Cantor
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>
> wrote:
> 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:
> http://groups.google.com/group/pdxfunc/tree/browse_frm/month/2009-08/5c565768ecf30c57?rnum=1&_done=%2Fgroup%2Fpdxfunc%2Fbrowse_frm%2Fmonth%2F2009-08%3F#doc_5c565768ecf30c57
>
> The experimental code which resulted is here:
> http://gist.github.com/165691
>
> You may also want to look at the dimensional package:
> http://code.google.com/p/dimensional/
>
> Jason
More information about the Haskell-Cafe
mailing list