无法理解F#错误消息:“ Candle.Volumes-> Totals”类型与“ Totals”类型不兼容

时间:2019-06-08 11:02:46

标签: f#

我收到以下消息:

  

类型“ Candle.Volumes->总计”与类型“总计”不兼容

总计是类型:

type Totals = {
    VolumeBeforePrice : int64
    Volume : int64
    ContractsCount : float
}

错误提示:

    let aggregatedAsks = CalculatePriceAtBaseVolume asks
    let volume = aggregatedAsks.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的函数。

1 个答案:

答案 0 :(得分:4)

CalculatePriceAtBaseVolume接受两个参数并具有类型

OrderBook.Entry list -> Candle.Volumes -> Totals 

F#函数经过咖喱处理,因此应用单个参数的结果将导致另一个函数具有一个参数。您只提供了一个OrderBook.Entry list类型的参数,所以

CalculatePriceAtBaseVolume asks

具有类型Candle.Volumes -> Totals

表达式aggregatedAsks.Volume要求aggregatedAsks的类型为Totals,但类型错误指示的类型为Candle.Volumes -> Totals