2010-08-03 12 views
5

FsUnit codice sorgente contiene una definizione inusuale: uscitaDove è definito "id" letterale?

let be = id

FSI:

val was : ('a -> 'a)

La semantica del "id" è la forma parentesi della seguente dichiarazione:

let be x = x

uscita FSI:

val be : 'a -> 'a

Si può vedere la leggera differenza: quest'ultimo esempio sostituisce espressione vero con vero, mentre la prima sintassi rappresenterebbe come (true).

cosa mi lascia perplesso è che non riesco a trovare alcun riferimento al "id" in F # di riferimento al linguaggio, non è descritto in un libro "Programmazione F #". Inoltre, "id" non è una parola chiave riservata, posso definire assegnare "id" a qualcos'altro, e quindi non posso più utilizzarlo in un modo che è mostrato nel primo esempio. Quindi mi chiedo se ci sono documenti F # che descrivono questo letterale e la sua semantica.

risposta

1

Questo non sembra affatto un valore letterale. Sembra più una funzione. In particolare, supponendo con la firma e il nome, sembra la funzione di identità.

Problemi correlati