Provide a useful implementation of toString() for Clojure functions


  • Type: Enhancement Enhancement
  • Status: Open Open
  • Priority: Minor Minor
  • Resolution: Unresolved
  • Affects Version/s: Release 1.5
  • Fix Version/s: None
  • Component/s: None
  • Labels:
  • Patch:
    Code and Test


Clojure functions do not provide a useful override of the default Java Object.toString() method.

Because of this, any time a Clojure function is printed out, it places a load on the develop to mentally reverse the necessary name mangling to get back to the namespace and function name.

I would vastly prefer better information here: the non-mangled name of the function, including namespace and, ideally, a little bit of the available meta-data: the file name and line number.

In other words, instead of novate.core.processing.async$locate_destination@2690d691 something more like novate.core.processing.async/locate-destination(async.clj:231).

Ideally, anything that is code generated as a class should implement a useful toString(). It would be nice if reified types could identify the containing namespace and function (and file/line number) as part of their default toString().

I suspect this would need to be controlled by a compiler option as it would slightly increase the generated bytecode size, and (imperceptably?) affect compilation speed.

  1. CLJ-1278-2.patch
    11/Oct/13 6:26 PM
    5 kB
    Howard Lewis Ship
  2. CLJ-1528--function-tostring.patch
    10/Oct/13 8:39 PM
    6 kB
    Howard Lewis Ship


Howard Lewis Ship made changes -
Field Original Value New Value
Attachment CLJ-1528--function-tostring.patch [ 12311 ]
Howard Lewis Ship made changes -
Attachment CLJ-1278-2.patch [ 12317 ]
Andy Fingerhut made changes -
Patch Code and Test [ 10002 ]


Vote (7)
Watch (1)


  • Created: