válido valor validación que original error cadena f# units-of-measurement value-restriction

f# - que - error de validación: el valor no es válido



Error de compilación F#FS0030, problemas con la restricción de valor (1)

Bueno, me equivoqué un poco y encontré la solución, en desesperación, pero no estoy seguro de entender por qué ...

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

Uf, es casi tan feo como las declaraciones genéricas en C #.

He leído la propaganda en StrangeLights , he leído el pasaje de Expert F # (página 119), pero no veo cómo se aplican a mi código:

Para mis pruebas, quiero verificar la igualdad entre flotadores, con un poco de tolerancia. Estoy convirtiendo todo en unidades de medida, pero quiero ser "genérico":

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

Luego puedo usar esto para verificar la igualdad en diferentes ''tipos'' de float, o curry para crear uno personalizado:

toleqm = toleq 1.0e-10<m>

Pero recibo el siguiente mensaje:

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.

No veo cómo puedo hacer más para que sea una función: no puedo ver ningún parámetro implícito.

¿Que pasa?