2010-10-14 3 views

risposta

42

Fondamentalmente si tratta di una convenzione di denominazione originata in LISP. La logica alla base è:

  1. X è un nome di segnaposto comune.
  2. XS è pronunciato X'es, cioè "molti X".
+4

La convenzione viene effettivamente estesa a strutture multidimensionali. Ad esempio, xss può essere una lista di liste e xsss può essere una matrice di matrici di array. – Adrian

+0

E perché non usare nomi propri e significativi? – shinzou

29
+1

Ho pensato che fosse xii;) –

+3

@Paul - no, funziona solo quando hai esattamente 12 xs –

8

Ho visto questo nome usato per variabili di lista in tutorial di programmazione funzionale, ma non stringhe (eccetto dove una stringa è considerato un elenco di caratteri).

In pratica è un nome fittizio utilizzato negli esempi. È possibile denominare una variabile scalare x mentre un elenco sarebbe xs, poiché xs è il plurale di x. Nel codice di produzione, è meglio avere un nome più descrittivo.

Si potrebbe anche vedere questo nel codice quale modello corrisponde alle liste. Per esempio (in OCaml):

let rec len l = 
    match l with 
    | [] -> 0 
    | x :: xs -> 1 + len xs 

Una coppia più descrittivo dei nomi potrebbe essere first :: rest, ma questo è solo un esempio.

+0

Tendo ad usare la stessa convenzione in produzione, ad esempio "ordine" e "ordini";) – bbozo

14

A parte il fatto che xs è destinato a essere un plurale di x come @Ken Bloom punti fuori, è anche importante notare come le lingue come la struttura Scala List. List è strutturato come un elenco collegato, in cui il contenitore ha un riferimento al primo elemento e al resto dell'elenco.

alt text

Il :: operatore (chiamato cons) costruisce una lista come:

42 :: 69 :: 613 :: Nil 

Il :: quando compaiono in corrispondenza di modello estrae anche un elenco nel primo elemento e il resto della lista come segue:

List(42, 69, 613) match { 
    case x :: xs => x 
    case Nil => 0 
} 

Poiché questo modello appare ovunque, i pubblicitari possono dedurre che xs implica "il resto della lista".

+7

Pronuncia mentalmente "xs" come "eccesso", come in "resto". – nibot