不理解F#错误消息:类型';蜡烛.体积->;总计';与类型';总计';
我有以下信息: “Candle.Volumes->Totals”类型与“Totals”类型不兼容 总计类型为:不理解F#错误消息:类型';蜡烛.体积->;总计';与类型';总计';,f#,F#,我有以下信息: “Candle.Volumes->Totals”类型与“Totals”类型不兼容 总计类型为: type Totals = { VolumeBeforePrice : int64 Volume : int64 ContractsCount : float } 错误发生在: let aggregatedAsks = CalculatePriceAtBaseVolume asks let volume = aggregatedAsks.Vol
type Totals = {
VolumeBeforePrice : int64
Volume : int64
ContractsCount : float
}
错误发生在:
let aggregatedAsks = CalculatePriceAtBaseVolume asks
let volume = aggregatedAsks.Volume
(在let volume行上)
调用的函数是:
let CalculatePriceAtBaseVolume (entries : OrderBook.Entry list) (minVolume : Candle.Volumes) : Totals =
let volumeRequested = Candle.ConvertVolumes(minVolume)
let zero =
{ VolumeBeforePrice = 0L
Volume = 0L
ContractsCount = 0. }
let aggregation = calculateTotals volumeRequested zero entries
aggregation : Totals
来自C系列,我不明白“Candle.Volumes->Totals”是什么意思,因为它看起来不像一个类型,而是一个将x转换为y的函数。
CalculatePriceAtBaseVolume
接受两个参数并具有类型
OrderBook.Entry list -> Candle.Volumes -> Totals
F#函数是循环的,因此应用单个参数的结果会导致一个参数的另一个函数。您只提供了一个类型为OrderBook.Entry list
so的参数
CalculatePriceAtBaseVolume asks
具有类型Candle.Volumes->Totals
表达式
aggregatedAsks.Volume
要求aggregatedAsks
具有类型Totals
,但它具有类型Candle.Volumes->Totals
,如类型错误所示。CalculatePriceAtBaseVolume
接受两个参数并具有类型
OrderBook.Entry list -> Candle.Volumes -> Totals
F#函数是循环的,因此应用单个参数的结果会导致一个参数的另一个函数。您只提供了一个类型为OrderBook.Entry list
so的参数
CalculatePriceAtBaseVolume asks
具有类型Candle.Volumes->Totals
表达式
aggregatedAsks.Volume
要求aggregatedAsks
具有类型Totals
,但它具有类型Candle.Volumes->Totals
,正如类型错误所示。因此,如果我理解得很清楚,缺少一个参数,它将值转换为一个curried函数,而不是其返回类型;这是正确的吗?@Thomas-CalculatePriceAtBaseVolume
是一个curried函数,因此从技术上讲只有一个参数,当应用该参数时,它会返回一个参数的另一个函数,即OrderBook.Entry list->(Candle.Volumes->Totals)
。如果您定义了一个函数,但没有提供所有声明的参数,则结果是另一个函数。@Thomas-如果您不熟悉咖喱,有一个很好的解释。咖喱在第五篇文章中进行了解释,但按顺序阅读是明智的,因为后面的文章建立在前面文章中介绍的概念之上。然后继续,把那个(优秀的)站点标记为书签,因为在学习F#时,你会想经常引用它。因此,如果我理解得很好,一个参数丢失了,它将值转换为一个curry函数,而不是它的返回类型;这是正确的吗?@Thomas-CalculatePriceAtBaseVolume
是一个curried函数,因此从技术上讲只有一个参数,当应用该参数时,它会返回一个参数的另一个函数,即OrderBook.Entry list->(Candle.Volumes->Totals)
。如果您定义了一个函数,但没有提供所有声明的参数,则结果是另一个函数。@Thomas-如果您不熟悉咖喱,有一个很好的解释。咖喱在第五篇文章中进行了解释,但按顺序阅读是明智的,因为后面的文章建立在前面文章中介绍的概念之上。然后继续,把那个(优秀的)网站加入书签,因为当你学习F#时,你会想经常参考它。