¿Cuándo usar el signo de exclamación en clojure(o lisp)?
naming (1)
Dicen que usan signos de exclamación al nombrar funciones impuras.
Pero no entiendo exactamente las funciones "impuras". Son ellos
- las funciones cambian el estado de sus argumentos (vía reset, alter, java-object-methods, ...)
- las funciones se producen como efectos secundarios (por ejemplo, imprimir, escupir, ...)
- ¿o ambos?
Obviamente, los apis oficiales de clojure no tienen ningún problema en todos los casos anteriores. Me pregunto cuándo debería ponerlos y necesito su ayuda para que mi código esté más sano.
Yo diría que no necesitas poner !
en cada función impura. Community Clojure Style Guide recomienda:
Los nombres de funciones / macros que no son seguras en las transacciones STM deben terminar con un signo de exclamación.
Así que, básicamente, ¡termina con !
Funciones que cambian el estado de los átomos, metadatos, vars, transitorios, agentes y también io.
Gracias a @noisesmith por actualización.