Erro do compilador F # FS0030, problemas com a restrição de valor
Eu li o anúncio noStrangeLights, Eu li opassagem do Expert F # (página 119), mas não consigo ver como eles se aplicam ao meu código:
Para meus testes, quero verificar a igualdade entre flutuadores, com um pouco de tolerância. Estou convertendo tudo em unidades de medida, mas quero poder ser 'genérico':
let toleq (e:float<_>) a b = (abs ( a - b ) ) < e
Posso então usar isso para verificar a igualdade em diferentes 'tipos' de float ou curry para criar um personalizado:
toleqm = toleq 1.0e-10<m>
Mas recebo a seguinte mensagem:
Type inference has inferred the signature
val toleq : float<'u> -> float<'u> -> float<'u> -> bool
Either define 'toleq' as a simple data term, make it a function, or add a
type constraint to instantiate the type parameters.
Não vejo como posso fazer mais para torná-lo uma função - não consigo ver nenhum parâmetro implícito.
E aí?