Clojure – why can’t let be used with vector?

replace

(let [x 1] (my-expression))

I'm trying to use:

(let (vector x 1) (my-expression))

Don't ask why, I prefer ordinary parentheses But clojure said:

let requires a vector for its binding in ...

What's up?

Solution

Let special form binding form must be a vector literal, not just an expression evaluated as a vector

Why? Roughly speaking, an expression must be compiled before it can be evaluated At compile time (vector x 1) will not be evaluated as a vector, it will just be a list In fact, if you want to evaluate, the parameters of the vector will be evaluated, which means that x must be solved. However, you don't want x to be parsed, you want it to be bound

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>