如果我这样做:
('a 'b 'c)
Run Code Online (Sandbox Code Playgroud)
我明白了:
c
Run Code Online (Sandbox Code Playgroud)
为什么?
我整理了一个高阶函数,在某些情况下会调用函数参数,但是根据函数的不同,它似乎会有不同的效果。我能够通过一个简单的函数重现相同的行为:
(defn foo [f a b] (f a b))
Run Code Online (Sandbox Code Playgroud)
对于“正常”功能,它可以正常工作:
user=> (foo list 2 3)
(2 3)
user=> (foo cons 1 '(2 3))
(1 2 3)
user=> (foo println 2 3)
2 3
nil
Run Code Online (Sandbox Code Playgroud)
但是对于运算符,它没有,它似乎只返回最后一个元素:
user=> (foo '+ 2 3)
3
user=> (foo '* 2 3)
3
user=> (foo '- 2 3)
3
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?