У меня есть список, который может содержать элементы, которые будут сравниваться как равные.Я хотел бы подобный список, но с одним удаленным элементом.Итак, из (: a: b: c: b: d) я хотел бы иметь возможность "удалить" только one : b, чтобы получить (: a: c: b: d).
Контекст - это рука в карточной игре, в которой находятся две колоды стандартных карт, поэтому могут быть дубликаты карт, но они могут быть разыграны по одной за раз.
У меня есть рабочий код, см. Ниже.Есть ли идиоматические способы сделать это в Clojure?
(defn remove-one [c left right]
(if (= right ())
left
(if (= c (first right))
(concat (reverse left) (rest right))
(remove-one c (cons (first right) left) (rest right)))))
(defn remove-card [c cards]
(remove-one c () cards))
Вот ответы на Scala, которые я получил недавно: Что такое идиоматический способ Scala «удалить» один элемент из неизменяемого Списка