Почему идентификаторы List и String называются "xs" (в Scala и других языках)? - PullRequest
33 голосов
/ 15 октября 2010

Многие примеры кода Scala содержат строки и коллекции с именем "xs".Почему хз?

Примеры:

var xs = List(1,2,3)
val xs = "abc"

Ответы [ 4 ]

43 голосов
/ 15 октября 2010

По сути, это соглашение об именах, которое возникло в LISP.Обоснование этого заключается в том, что:

  1. X является распространенным именем-заполнителем.
  2. XS произносится X'es, то есть "много X".
29 голосов
/ 15 октября 2010
15 голосов
/ 15 октября 2010

Помимо того факта, что xs подразумевается во множественном числе от x, как указывает @ Кен Блум , также важно отметить, как языки, такие как структура Scala List. List структурирован как связанный список, в котором контейнер имеет ссылку на первый элемент и на остальную часть списка.

alt text

Оператор :: (называемый cons ) создает список следующим образом:

42 :: 69 :: 613 :: Nil

:: при появлении в сопоставлении с образцом также извлекает список в первый элемент и остальную часть списка следующим образом:

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

Поскольку этот шаблон встречается повсюду, читатели могут сделать вывод, что xs подразумевает «остальную часть списка».

8 голосов
/ 15 октября 2010

Я видел это имя для списочных переменных в руководствах по функциональному программированию, но не для строк (кроме случаев, когда строка считается списком символов).

Это в основном фиктивное имя, используемое в примерах. Вы можете назвать скалярную переменную x, тогда как список будет xs, поскольку xs является множественным числом x. В рабочем коде лучше иметь более описательное имя.

Вы также можете увидеть это в коде, который шаблон соответствует спискам. Например (в OCaml):

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

Более описательной парой имен может быть first :: rest, но это только пример.

...