Не понимает сообщение об ошибке F #: тип «Candle.Volumes -> Totals» не совместим с типом «Totals» - PullRequest
1 голос
/ 08 июня 2019

У меня есть следующее сообщение:

Тип 'Candle.Volumes -> Totals' не совместим с типом 'Totals'

Итого по типу:

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 Ответ

4 голосов
/ 08 июня 2019

CalculatePriceAtBaseVolume принимает два аргумента и имеет тип

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

Функции F # каррируются, поэтому в результате применения одного аргумента получается другая функция с одним аргументом.Вы предоставили только один аргумент типа OrderBook.Entry list, поэтому

CalculatePriceAtBaseVolume asks

имеет тип Candle.Volumes -> Totals.

Выражение aggregatedAsks.Volume требует, чтобы aggregatedAsks имело тип Totals, но оноимеет тип Candle.Volumes -> Totals, как указывает ошибка типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...