Почему F # неожиданно возвращает значения из функций как @ + номер строки? - PullRequest
0 голосов
/ 20 октября 2011

У меня есть некоторый код в F #, который работал нормально, но теперь любая функция возвращает имя привязки let с номером строки @ +? Так до того, когда я сделал что-то вроде этого:

let sqlData = GetSummary 2011

Я бы получил данные. Теперь я получаю sqlData @ 160 в качестве возвращаемого типа, который нарушает другие функции, ожидающие определенного типа. Буду признателен за любую помощь в том, почему это внезапно начало происходить.

UPDATE: Поэтому я изменил код GetSummary на этот, просто чтобы посмотреть, что произойдет:

 let GetSummary fiscalYear =
    let g = 22
    g

И ничего не изменилось. Я получил точно такие же результаты, и он не сломался бы в функции, даже если у меня есть точка останова. Это также не будет входить в GetSummary. Почему бы игнорировать некоторые функции, а не другие?

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Я предполагаю, что вы изменили что-то в функции GetSummary, так что она на самом деле возвращает функцию, а не возвращает данные (когда вы даете ей один аргумент). Например, этот фрагмент ведет себя немного похожим образом - он возвращает некоторые внутренние вещи и не входит в функцию bar:

> let bar n = printfn "inside bar"; n + 1;;
val bar : int -> int

> let foo n = bar;; // This takes 'n' and returns a function..
val foo : 'a -> (int -> int)

> printfn "%O" (foo 10);; // Here, we call 'foo', but the result is a function!
FSI_0016+it@15-3
1 голос
/ 20 октября 2011

Хорошо, теперь я чувствую себя действительно глупо.Я вернулся и понял, что изменил определение GetSummary на

GetSummary name fiscalYear

Поскольку я не передавал имя, мне показалось, что я каррирую функцию, отсюда и странное поведение.

Спасибо за ваш вклад !!!

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