问题标签 [defn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2744 浏览

function - 如何从 Clojure 中的字符串定义函数?

我想这样做(在 REPL 或任何地方)

然后能够做到

或者,如果有任何其他方法可以从宏中的自定义字符串创建 defn,您能否将我推向正确的方向?

0 投票
1 回答
3530 浏览

lisp - 帮我写一个 Clojure 宏,它会自动将元数据添加到函数定义中

我意识到 Macro Club 的第一条规则是不要使用宏,所以下面的问题更多地是作为学习 Clojure 的练习而不是其他任何东西(我意识到这不一定是宏的最佳使用)。

我想编写一个简单的宏,它充当常规(defn)宏的包装器,并最终将一些元数据添加到定义的函数中。所以我想要这样的东西:

...扩展成这样的东西:

原则上这对我来说似乎并不难,但我无法[args]确定正确解析定义函数中的和其他形式的细节。

作为奖励,如果可能的话,我希望宏能够处理所有不同形式的 defn(即,有或没有文档字符串、多个 arity 定义等)。我在clojure-contrib/def包中看到了一些看起来可能有用的东西,但是很难找到使用它们的示例代码。

0 投票
4 回答
1432 浏览

clojure - 如何将 :arglists 修改为 Clojure fn 或宏?

如何修改 clojure fn 或宏的 :arglist 属性?

好的,那里没有运气,所以我尝试执行以下操作。

嗯,所以现在 :arglists 键不见了?好吧,我放弃了,我该怎么做?我只想修改 :arglists 的值。上面的示例使用了 defn,但我也想知道如何使用宏 (defmacro) 设置 :arglists。

0 投票
3 回答
886 浏览

function - 动态检索 Clojure 函数元数据

环境:Clojure 1.4

我正在尝试从函数向量中动态提取函数元数据。

现在,在 REPL 中检索元数据(在某种程度上)很简单:

但是,当我尝试制作地图以从元数据中获取:ans:tau-or-pi或 basic:name时,出现异常:

在进行了更多搜索之后,我从 2009 年的一篇帖子中得到了以下想法(https://groups.google.com/forum/?fromgroups=#!topic/clojure/VyDM0YAzF4o):

我知道defn宏(在 Clojure 1.4 中)将元数据放在宏Vardef部分中,defn所以这就是简单(meta #'funca)工作的原因,但有没有办法动态获取函数元数据(如map上面的示例)?

也许我在语法上遗漏了一些东西,但如果有人能指出我正确的方向或正确的方法,那就太好了。

谢谢。

0 投票
1 回答
190 浏览

macros - Clojure macro to process multiple function metadata

In Clojure, how do I make a library macro which processes supplied functions metadata and return some result? Amount of functions is unlimited and they should be passed without being boxed into a sequence ((my-macro fn1 fn2) instead of (my-macro [fn1 fn2]))

Say, we expect function vars having :foo keys in meta and the macro concatenates their values. The following snippet should work in REPL (considering my-macro is in the namespace):

I tried several approaches but was only able to process single function so far.

Thanks!

0 投票
1 回答
199 浏览

clojure - Clojure 中的多参数定义——第一场比赛先发球?

具体来说,在以下情况下应该发生什么:

即,我可以依靠 clojure 始终返回 0 而不是除以零吗?

0 投票
1 回答
417 浏览

clojure - clojure - 函数体或 let 语句中的 defn/def

为什么不能像从 LET 子句那样从函数的 BODY 以相同的方式访问 defn 中的值?

0 投票
2 回答
85 浏览

clojure - Clojure 使用哪些命名空间进行定义

根据规范,def应该在当前ns中实习var(即*ns*)。但是,以下代码看起来并不像它:

我错过了什么?

笔记:

  • defn只是为了清楚起见。定义和运行匿名函数也同样有效。
  • 我知道使用def内部函数可能不是很惯用。然而,这只是我遇到的一个更大问题的精华。
0 投票
1 回答
115 浏览

clojure - Clojure Defn 在显示正确答案后返回空括号

我试图只获取一个生肖名称以将其传递到不同的功能,但我不知道为什么在显示生肖后我会得到空括号。我是 Clojure 的新手。

我运行它(miko),结果如下:

摩羯座

()

请帮我删除这个,因为当我想将结果名称(例如 Capricorn)传递给另一个函数时,它会传递 ()-括号。

0 投票
2 回答
63 浏览

clojure - Clojure 将名称定义为乘数

谁能解释为什么在下面的代码中,函数的名称在第一部分充当*(乘数)?

给出bar两个 args(bar 2 3)产量(* 2 3 100)