Небольшой вопрос по созданию списков в Clojure - PullRequest
2 голосов
/ 14 июля 2009

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

это мой код:

(def in1 (read-line)) (def in2 (read-line)) (def in3 (read-line)) (def in4 (read-line))

(def mylist '(in1 in2 in3 in4))

Однако, когда я распечатываю список, он дает мне «in1 in2 in3 in4». Как мне заставить его поместить значение переменных in1 in2 in3 и in4 в список?

Спасибо

Ответы [ 3 ]

4 голосов
/ 14 июля 2009

Одиночная кавычка в Clojure (и большинстве Lisps) говорит системе не оценивать выражение Таким образом

'(in1 in2 in3 in4) 

совпадает с

(quote (in1 in2 in3 in4)

Они оба заканчивают, как вы видели, списком символов.

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

(def mylist (list in1 in2 in3 in4))
2 голосов
/ 14 июля 2009
(def mylist (list in1 in2 in3 in4))
0 голосов
/ 05 ноября 2015

Использование list, как и предполагалось, это то, что вы ищете. Если вы хотите смешать оцененные и неоцененные символы, вы можете использовать синтаксические кавычки и кавычки. На ваш вопрос это другой способ на тот случай, если кто-то ищет это. (Обратите внимание на обратную кавычку вместо одинарной кавычки)

`(~in1 ~in2 ~in3 ~in4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...