J'ai lu le blurb au StrangeLights, j'ai lu le passage de Expert F # (page 119), mais je ne vois pas comment ils s'appliquent à mon code:F # erreur de compilation FS0030, problèmes avec la restriction de valeur
Pour mes tests, je veux vérifier l'égalité entre les flotteurs, avec un peu de tolérance. Je convertir tout pour les unités de mesure, mais je veux être en mesure d'être « générique »:
let toleq (e:float<_>) a b = (abs (a - b)) < e
Je peux ensuite utiliser pour vérifier l'égalité sur les différents « types » de flotteur, ou curry pour faire un personnalisé:
toleqm = toleq 1.0e-10<m>
Mais je reçois le message suivant:
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.
Je ne vois pas comment je peux faire plus pour en faire une fonction - Je ne vois pas les paramètres implicites .
Quoi de neuf?
Je ne peux pas reproduire ce message d'erreur sur 1.9.6.2, pouvez-vous montrer le programme minuscule entier qui le génère? – Brian
Il n'y a pas de petit programme, juste essayé en FSI, cette seule ligne me donne l'erreur. – Benjol
Croisement vers une autre question sur le même thème: http://stackoverflow.com/questions/1131456/understanding-f-value-restriction-errors – Benjol