【发布时间】:2012-05-30 15:39:11
【问题描述】:
我很难理解(因此记住)这里描述的 clojure require 语法:http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require。这似乎既违反直觉又不统一。
例如,下面为什么需要引用这个向量:
(require '[clj-json.core :as json])
反直觉,因为通常向量在 clojure 中不被引用(列表被引用,向量被视为数据)。
而且不统一,因为在这种情况下,向量没有被引用:
(ns xxx
(:require [clj-json.core :as json]))
我意识到 require 函数和 ns 宏中的 :require 用法只是在光学上相似,但仍然如此。
还有其他一些奇怪的东西,例如我可以这样做:
(require '(clj-json.core))
但我不能这样做:
(require '(clj-json.core :as json))
谁能回答这些问题:
- 在第一个示例中,为什么需要引用向量?
- 为什么不需要在ns宏中引用?
- 为什么列表符号不允许
:as?
我想知道为什么事情是这样的,或者是否在设计时没有注意到不一致。
【问题讨论】:
-
如果您还没有看到,请查看 clojure-dev 列表中的 this thread。我发现它提供了很多信息。
标签: syntax clojure include quoting