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

Clojure 使用#()返回1的匿名函数,clojure,Clojure,使用defn或fn很容易创建一个函数,该函数接受一个忽略它的参数并返回1: (defn ret1 [arg] 1) (fn [arg] 1) 是否可以使用#()宏执行此操作?我不是说用丑陋的东西或像这样的“欺骗” 我的意思是忽略参数并返回1。我找不到有效的干净语法。不能使用#()语法创建具有未使用参数的函数,就像您的描述所要求的那样。这是#()读取器宏的一个限制 我建议不要使用#(),而只写(经常是1),这是创建忽略参数而总是返回1的函数的一种非常简单的方法。#(do%&1)。。。但是(持续1

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

(defn ret1 [arg] 1)
(fn [arg] 1)
是否可以使用#()宏执行此操作?我不是说用丑陋的东西或像这样的“欺骗”

我的意思是忽略参数并返回1。我找不到有效的干净语法。

不能使用#()语法创建具有未使用参数的函数,就像您的描述所要求的那样。这是#()读取器宏的一个限制


我建议不要使用#(),而只写(经常是1),这是创建忽略参数而总是返回1的函数的一种非常简单的方法。

#(do%&1)
。。。但是
(持续1)
更好。

那么
#(身份1)
呢?它的作用与
#(do%&1)
(持续1)

这项功能相同-越来越近#(最后(列表%1))#()语法不能用于创建具有未使用参数的函数。请确保它可以(参见我的答案),但这不是最好的方法。@drcode请承认答案是错误的。和您一样,我也从未想过插入一个杂散的
%&
来调用任意参数列表。@drcode。。。还是不?有争议的是,提及论点,即使没有对其进行评估,也构成了使用。但是,正如问题所要求的那样,它们肯定被忽略了。@thumboil:让大家知道我4年前给出的一个答案,我承认自己错了,对“忽略”和“丑陋”这两个词做出了特定的解释。@drcode LOL。。。我会提醒大家注意那些无用地使用分裂不定式的人。啊哈!是的,这比我上次使用#(last(list))的尝试更干净。我还喜欢您使用%&将其推广到任意数量的参数。原始问题的灵感来自SICP 1.37,其中规定使用(lambda(i)1.0)返回1.0。到clojure的明显映射是(fn[i]1),但我想知道如何使用#()。谢谢
#(/ % %)  or 
#(if (nil? %) 1 1)