Подтвердить что ты не робот

Почему идентификаторы List и String называются "xs" (в Scala и других языках)?

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

Примеры:

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

Ответ 1

В принципе это соглашение об именах, созданное в LISP. Обоснованием этого является то, что:

  • X - общее имя заполнителя.
  • XS произносится как X'es, т.е. "много X".

Ответ 3

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

alt text

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

42 :: 69 :: 613 :: Nil

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

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

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

Ответ 4

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

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

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

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

Более описательная пара имен может быть first :: rest, но это всего лишь пример.