Noções Básicas Sobre Erros de Restrição de Valor F #
Não entendo como a Restrição de Valor no F # funciona. Eu li a explicação nowiki assim como oDocumentação MSDN. O que eu não entendo é:
Por que, por exemplo, isso me dá um erro de restrição de valor (tirado deisto questão):
let toleq (e:float<_>) a b = (abs ( a - b ) ) < e
Mas isso não acontece:
let toleq e (a:float<_>) b = (abs ( a - b ) ) < e
Isso é generalizado tudo bem ...
let is_bigger a b = a < b
mas isso não é (é especificado como int):
let add a b = a + b
Por que funções com parâmetros implícitos geram Restrição de Valor:
isto:
let item_count = List.fold (fun acc _ -> 1 + acc) 0
vs isso:
let item_count l = List.fold (fun acc _ -> 1 + acc) 0 l
(Lembre-se, se eu usar essa função em um fragmento de código, o erro de RV desaparecerá, mas a função será especificada para o tipo que eu usei, e eu quero que ela seja generalizada)
Como funciona?
(Estou usando o último F #, v1.9.6.16)