使用#()返回1的匿名函数

Mar*_*rkc 17 clojure

使用defn或fn很容易创建一个函数,它接受一个忽略它的参数并返回1:

(defn ret1 [arg] 1)
(fn [arg] 1)
Run Code Online (Sandbox Code Playgroud)

是否可以使用#()宏执行此操作?我并不是说使用丑陋或"作弊"之类的东西

#(/ % %)  or 
#(if (nil? %) 1 1)
Run Code Online (Sandbox Code Playgroud)

我的意思是字面上忽略参数并返回1.我找不到一个有效的干净语法.

fog*_*gus 29

#(do %& 1)......但是(constantly 1)更好.


drc*_*ode 5

#()语法不能用于按照描述所需的方式创建具有未使用参数的函数.这是#()阅读器宏的限制.

我建议不要使用#()而只是写(不断地为1),这是创建忽略参数的函数的一种非常简单的方法,而是始终返回1.

  • *#()语法不能用于创建具有未使用参数的函数*当然可以(参见我的答案),但这不是最好的方法. (2认同)