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?