小编Bak*_*n O的帖子

何时在clojure(或lisp)中使用感叹号?

他们说在命名不纯函数时使用感叹号.

但我并不完全理解"不纯"的功能.是吗

  • 函数改变其参数的状态(通过reset!,alter,java-object-methods,...)
  • 功能发生副作用(例如,打印,吐出......)
  • 或两者?

显然,官方的clojure apis在每个案例上都没有爆炸.我想知道什么时候应该把它们放在一起,需要你的帮助才能使我的代码更加健全.

naming clojure

21
推荐指数
1
解决办法
5321
查看次数

var或ref/atom/agent用于常量值?

我想谦虚地问......

什么,"var或ref/atom/agent for constant values?",请问?当然,我确实使用vars作为常量值.

但我总是想知道当值作为常量时我应该使用哪一个,但它们应该在运行时分配,而不是在编译时(在读取代码时).

例如,想一下用户配置文件中编写的一些java属性.它们应该在运行时分配,因为数据不在代码中.但是在读取数据之前也应该定义它们,因为其他代码引用它们.

在这种情况下,

我何时使用'var'?:

  • 我定义'var',或者只是声明'var'(当它没问题的时候).
  • 然后我通过读取选项文件的函数再次重新定义了那些'var'.
  • 但是覆盖'var'感觉很糟糕,或者定义'var'内部函数感觉很奇怪.

我什么时候使用ref/atom/agent?:

  • 我将ref/atom/agents分配给'var'.
  • 然后我通过读取选项文件的函数更新那些ref/atom/agents.
  • 但由于整个计划使用了这些值,所以我担心它们的成本.
  • ...使用太多的@宏有点烦人.

我不知道应该用什么.

在那些情况下你用了什么?

"VAR的?"REF /原子/代理的?甚至'延迟'?

提前致谢.

var clojure ref agent

5
推荐指数
1
解决办法
245
查看次数

标签 统计

clojure ×2

agent ×1

naming ×1

ref ×1

var ×1