У меня есть List, который может содержать элементы, которые будут сравниваться как равные. Мне нужен подобный список, но с удалением одного элемента. Поэтому из (A, B, C, B, D) я хотел бы иметь возможность "удалить" только один B, чтобы получить, например. (A, C, B, D). Порядок элементов в результате не имеет значения.
У меня есть рабочий код, написанный в Lisp -инспециализированном виде в Scala. Есть ли более идиоматический способ сделать это?
Контекст - это карточная игра, в которой играют две колоды стандартных карт, поэтому дублировать карты, но все равно воспроизводить по одному.
def removeOne(c: Card, left: List[Card], right: List[Card]): List[Card] = {
  if (Nil == right) {
    return left
  }
  if (c == right.head) {
    return left ::: right.tail
  }
  return removeOne(c, right.head :: left, right.tail)
}
def removeCard(c: Card, cards: List[Card]): List[Card] = {
  return removeOne(c, Nil, cards)
}