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

时间:2013-12-16 08:22:24

标签: clojure naming

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

但我并不完全理解“不纯”的功能。他们是

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

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

1 个答案:

答案 0 :(得分:24)

我会说你不需要把!放在每个不纯的函数上。 Community Clojure Style Guide建议:

  

STM事务中不安全的函数/宏的名称   应以感叹号结束。

所以,基本上,以!函数结束,这些函数也会改变原子,元数据,变量,瞬态,代理和io的状态。

感谢@noisesmith的更新。