pythonclojuredir

Python "dir" equivalent in Clojure


Does anybody know if there is a Clojure equivalent for Pythons "dir". Basically I need to know the functions I can call on something or more specifically for java objects I want to know the methods and properties available (I am not sure if in java they are called methods and properties, this is C# lingo).


Solution

  • clojure.contrib.repl-utils/show for use at the REPL:

    user=> (use '[clojure.contrib.repl-utils :only (show)])
    nil
    user=> (show String)
    ===  public final java.lang.String  ===
    [ 0] static CASE_INSENSITIVE_ORDER : Comparator
    [ 1] static copyValueOf : String (char[])
    [ 2] static copyValueOf : String (char[],int,int)
    [ 3] static format : String (Locale,String,Object[])
    [ 4] static format : String (String,Object[])
    ...
    

    Alternatively, maybe something like:

    user=> (map #(.getName %) (.getMethods String))
    ("equals" "toString" "hashCode" "compareTo" ...)
    

    .getFields, and .getConstructors accordingly.