Zrozumienie błędów ograniczenia wartości F #

Nie rozumiem, jak działa ograniczenie wartości w F #. Przeczytałem wyjaśnienie wwiki tak dobrze jakDokumentacja MSDN. Nie rozumiem:

Dlaczego, na przykład, daje mi to błąd ograniczenia wartości (zaczerpnięty zto pytanie):

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

Ale to nie:

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

To jest uogólnione dobrze ...

let is_bigger a b = a < b

ale to nie jest (jest określone jako int):

let add a b = a + b

Dlaczego funkcje z niejawnymi parametrami generują ograniczenie wartości:

to:

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

vs to:

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

(Pamiętaj, że jeśli użyję tej funkcji w fragmencie kodu, błąd VR zniknie, ale wtedy funkcja zostanie określona dla typu, dla którego ją użyłem i chcę, aby została uogólniona)

Jak to działa?

(Używam najnowszego F #, v1.9.6.16)

questionAnswers(3)

yourAnswerToTheQuestion