Frage

Ich habe den Klappentext unter StrangeLights habe ich die Passage von Experten gelesen F # (Seite 119), aber ich kann nicht sehen, wie sie auf meinen Code anwenden:

Für meine Tests mag ich die Gleichstellung von Schwimmern zu überprüfen, mit einem wenig Toleranz. Ich Umwandlung alles Maßeinheiten, aber ich möchte in der Lage zu sein ‚generische‘:

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

Ich kann dann diese verwenden Gleichheit auf verschiedene ‚Typen‘ von float zu überprüfen, oder es Curry ein Brauch zu machen:

toleqm = toleq 1.0e-10<m>

Aber ich bekomme die folgende Meldung:

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.

Ich sehe nicht, wie ich noch mehr tun können, um eine Funktion zu machen - ich keine impliziten Parameter sehen.

Wie geht es?

War es hilfreich?

Lösung

Nun, verwirrte ich ein wenig herum und fand die Lösung, in der Verzweiflung, aber ich bin nicht sicher, dass ich verstehe, warum ...

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

Ugh, ist es fast so hässlich wie allgemeine Erklärungen in C #.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top