Понимание ошибок ограничения значения F #

Я не понимаю, как работает ограничение значения в F #. Я прочитал объяснение ввики так же хорошо какДокументация MSDN, Что я не понимаю, так это:

Why, for example, this gives me a Value Restriction error (Taken from this question):

let toleq (e:float<_>) a b = (abs ( a - b ) ) < e

But ths doesn't:

let toleq e (a:float<_>) b = (abs ( a - b ) ) < e

This is generalized all right...

let is_bigger a b = a < b

but this isn't (it is specified as int):

let add a b = a + b

Why functions with implicit parameters generate Value Restriction:

this:

let item_count = List.fold (fun acc _ -> 1 + acc) 0

vs this:

let item_count l = List.fold (fun acc _ -> 1 + acc) 0 l

(Mind you, if I do use this function in a code fragment the VR error will be gone, but then the function will be specified to the type I used it for, and I want it to be generalized)

Как это работает?

(Я использую последнюю версию F #, v1.9.6.16)

Ответы на вопрос(3)

Ваш ответ на вопрос