Clojure - Цитирование списка Добавляет текст "цитата" в список - как это удалить? - PullRequest
0 голосов
/ 05 августа 2020

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

(def test-map
  {:tree '("1" "2" "3" '("1" "2"))})

Проблема в том, что это, кажется, добавляет слово «цитата» в фактический список .

(:tree test-map)
;("1" "2" "3" (quote ("1" "2")))

(first (last (:tree test-map)))
;quote

Мой вопрос в том, как мне избавиться от текста "цитаты". Моя цель - иметь возможность работать с этими типами списков по определенному числу и иметь возможность выводить строки последовательно на заданной глубине.

(for [text (second (last (:tree test-map)))]
  text)

Это основная идея c, но Мне кажется странным использовать здесь второй, когда я визуально смотрю на него, список, над которым я работаю, является первым элементом.

Есть ли способ делать со списками то, что я хочу? Лучше использовать векторы?

1 Ответ

2 голосов
/ 06 августа 2020

Только не цитируйте внутренний список. Цитата применяется ко всей вложенной структуре, поэтому, если вы используете sh для построения определенной структуры данных, вы можете просто поставить кавычку в начале, а затем записать структуру данных обычным образом.

...