Зачем использовать scala.collection.immutable.Stack

Мне нужно что-то, чтобы хранить LIFO. Нет необходимости в прохождении и других функциях, кроме push и pop.

Я нашел специальный класс в коллекции scala для создания стека. Но ему не хватает объекта Nil в сопоставлении с образцом и других удобных scala идиомах. Неизменяемые списки хорошо подходят на первый взгляд, у них есть недостатки конструкции и для извлечения, и это все необходимо для LIFO.

Есть ли какая-либо причина для scala.collection.immutable.Stack существование? Почему я должен предпочесть использовать его, какие варианты использования показывают его преимущества?

Ответ 1

Из документации API:

Примечание: Этот класс существует только для исторической причины и в качестве аналога измененных стеков. Вместо неизменного стека вы можете просто использовать список.

И в немного больше деталей:

Неисключаемые стеки используются редко в программах Scala, потому что их функциональность включена в списки: A push в неизменяемом стеке то же, что и :: в списке, а pop в стеке - то же, что и tail on список.

Итак, чтобы ответить на ваши вопросы:

  • Да, есть причина для его существования.
  • Нет, вы не должны отдать предпочтение спискам.