Error formatting macro: pagetree: java.lang.NullPointerException
Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History

General

  1. Do I need to know Java to use Clojure?
    Not at first, but it helps to know the standard Java APIs.

Syntax

  1. Why doesn't #(%) work?
    Because it expands to (fn x (x)). #() always expands to include parens around the expression you give it. You might try #(vector x) instead.

Collections

  1. Why doesn't nth work on sets and maps?
    "There is a difference between a sequential view of a collection (i.e. what you get from seq) and the collection itself. Maps are not sequential data structures. nth is only supported for sequential data structures, and that is by design." – nth on maps thread

Java Interop

  1. How do you refer to a nested/inner class?
    Use: EnclosingClass$NestedClass
  2. Why doesn't (. Integer getName) work?
    . is a special operator. In particular, it does non-standard evaluation of its first arg. Because . can call static and instance methods, it determines if it is static call be seeing if the first arg names a class. In the case of (. Integer getName), it tries to find the static getName member and doesn't, because there isn't one. You can use this syntax to call a static method on Integer: (. Integer parseInt "42"). In short, if you can't say x.y() in Java you can't say (. x y) in Clojure, and you can't say Integer.getName() in Java.
  3. How do I call a Java method that takes a variable number of arguments?
    The variable arguments are actually just an array:
  4. How do I get primitive types like int?

APIs

  1. How do I copy a file?
    Use Apache Commons IO

Lisp

  1. Does Clojure support custom reader macros?
    No, and support is not planned.
Labels: