2010-10-14 34 views

Répondre

42

Fondamentalement, c'est une convention de nommage qui provient de LISP. La logique derrière cela est la suivante:

  1. X est un nom d'espace réservé commun.
  2. XS est prononcé X'es, c'est-à-dire "many X".
+4

La convention est en fait étendue aux structures multidimensionnelles. Par exemple, xss peut être une liste de listes et xsss peut être un tableau de tableaux de tableaux. – Adrian

+0

Et pourquoi ne pas utiliser des noms appropriés et significatifs? – shinzou

29
+1

Je pensais que c'était xii;) –

+3

@Paul - non, cela fonctionne seulement quand vous avez exactement 12 xs –

8

Je l'ai vu ce nom utilisé pour les variables de la liste dans les didacticiels de programmation fonctionnelle, mais non des chaînes (sauf si une chaîne est considérée comme une liste de caractères).

C'est fondamentalement un nom factice utilisé dans les exemples. Vous pourriez nommer une variable scalaire x alors qu'une liste serait xs, puisque xs est le pluriel de x. En code de production, il est préférable d'avoir un nom plus descriptif.

Vous pourriez également voir ceci dans le code dont le motif correspond aux listes. Par exemple (en OCaml):

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

Une paire plus descriptive des noms pourrait être first :: rest, mais cela est juste un exemple.

+0

J'ai tendance à utiliser la même convention en production, par exemple "order" et "orders";) – bbozo

14

Outre le fait que xs est censé être un pluriel de x comme @Ken Bloom rappelle, il est également intéressant de noter comment les langues comme la structure Scala List. List est structuré comme une liste liée, dans laquelle le conteneur a une référence au premier élément et au reste de la liste.

alt text

L'opérateur :: (appelé cons) construit la liste en tant que:

42 :: 69 :: 613 :: Nil 

Le :: lorsque apparaissant dans l'appariement de motif extrait également une liste dans le premier élément et le reste de la liste en tant que suit:

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

Puisque ce modèle apparaît partout, re les aders peuvent déduire que xs implique "le reste de la liste".

+7

Je prononce mentalement le "xs" comme "excès", comme dans "le reste". – nibot