gpt4 book ai didi

f# - 如何使用货币对实体进行建模?

转载 作者:行者123 更新时间:2023-12-04 08:15:42 25 4
gpt4 key购买 nike

我正在尝试使用货币计量单位在 F# 中对债券实体进行建模。

type Bond = {
Isin: string
Issuer: string
Maturity: DateTime
Price: float<???>
}
让我们假设一个包含所有可用/可能货币的静态表可用。
type Currency = {
Code : string
Name : string
}
我可以将 Price 作为 float ,将 PriceCurrency 作为字符串,甚至作为货币类型,但我认为这并不理想。
有任何想法吗?

最佳答案

我认为 F# 计量单位不适合这个用例,因为编译器不知道货币表。如果您无论如何都想使用计量单位,则必须将每种货币硬编码到您的来源中,如下所示:

open System

[<Measure>] type Dollar
[<Measure>] type Pound

type Bond =
{
Isin: string
Issuer: string
Maturity: DateTime
}

type DollarBond =
{
Bond: Bond
Price: float<Dollar>
}

type PoundBond =
{
Bond: Bond
Price: float<Pound>
}

let poundsPerDollar = 0.73<Pound/Dollar>

let toPoundBond (dollarBond : DollarBond) =
{
Bond = dollarBond.Bond
Price = dollarBond.Price * poundsPerDollar
}

let dollarBond : DollarBond =
{
Bond = {
Isin = "My isin"
Issuer = "My issuer"
Maturity = DateTime.Parse("1/1/2050")
}
Price = 1000.0<Dollar>
}

printfn "%A" <| toPoundBond dollarBond

关于f# - 如何使用货币对实体进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65716744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com