关于在Clojure中创建列表的小问题

时间:2009-07-14 04:35:22

标签: list clojure

我是Clojure的初学者,我有一个简单(愚蠢)的问题。 我试图读取4个用户输入,然后将这些输入存储到List

这是我的代码:

(def in1(读行))    (def in2(读行))   (def in3(读行))   (def in4(读行))

(def mylist'(in1 in2 in3 in4))

然而,当我打印列表时,它给了我“in1 in2 in3 in4”。我怎样才能将变量in1 in2 in3和in4中的值放入List?

谢谢

3 个答案:

答案 0 :(得分:4)

Clojure中的单引号(以及大多数Lisps)告诉系统不要评估表达式。因此

'(in1 in2 in3 in4) 

相同
(quote (in1 in2 in3 in4)

如你所见,他们最终都会得到一个符号列表。

如果您想要这些符号所代表的值的列表,则可以使用列表表单。这将评估其所有参数并返回结果列表。它看起来像这样:

(def mylist (list in1 in2 in3 in4))

答案 1 :(得分:2)

(def mylist (list in1 in2 in3 in4))

答案 2 :(得分:0)

正如您所建议的,使用list是您正在寻找的东西。如果您想混合评估和未评估的符号,可以使用语法引用和取消引用。 对于你的问题,这是另一种方式,以防有人正在寻找这个。 (注意反引号而不是单引号)

`(~in1 ~in2 ~in3 ~in4)