【发布时间】:2014-05-20 22:17:46
【问题描述】:
我有一张从关键字到指南针方向字符串的地图:
(def dirnames {:n "North", :s "South", :e "East", :w "West"})
我可以使用地图作为函数来查找名称:
(dirnames :n)
;# = "North"
在我看来
(map dirnames [:n :s])
应该返回向量
["North" "South"]
但它会返回
[:n :s]
相反。我已经尝试了六种方法,在 (map) 调用中提供不同的函数来代替“dirnames”,并且我总是得到关键字的向量。
显然我缺少一些基本的东西。这是什么?
【问题讨论】:
-
哪个 Clojure 版本?我只在 1.4.0 和 1.5.1 中尝试过,它们都做你想做的事,即
(map dirnames [:n :s])评估为("North" "South")。或者将map替换为mapv,你会得到["North" "South"]。 -
我一直在 Light Table 中工作;我在 Light Table 的“InstaREPL”中看到了上面的结果。如果我将 REPL 作为“java -cp clojure.jar clojure.main”运行,我会看到正确的行为。
-
好像是Light Table的问题。
-
啊,那我帮不了你了:/我不使用 Light Table。
-
让 Light Table 从头开始评估整个模块似乎已经解决了问题。
标签: clojure lighttable