2010-08-03 13 views
5

FsUnit Quellcode enthält eine ungewöhnliche Definition:Wo ist "id" literal definiert?

let be = id

FSI Ausgang:

val was : ('a -> 'a)

Die Semantik der "id" ist die geklammerten Form der folgenden Erklärung:

let be x = x

FSI-Ausgabe:

val be : 'a -> 'a

Sie können die kleinen Unterschied sehen: das letztere Beispiel ersetzt Ausdruck wahr sein mit wahr, während die erste Syntax als (true) darstellen würde.

Was mich verwirrt ist, dass ich keinen Verweis auf "ID" in F # Sprachreferenz finden kann, weder es ist in einem "Programmierung F #" Buch beschrieben. Außerdem ist "id" kein reserviertes Schlüsselwort, ich kann "id" für etwas anderes definieren, und dann kann ich es nicht mehr so ​​verwenden, wie es im ersten Beispiel gezeigt wird. Ich frage mich also, ob es irgendwelche F # -Dokumente gibt, die dieses Literal und seine Semantik beschreiben.

Antwort

1

Dies sieht überhaupt nicht wie ein Literal aus. Es sieht eher wie eine Funktion aus. Genauer gesagt, durch die Signatur und den Namen erraten, sieht es wie die Identitätsfunktion aus.