Does Clojure have an equivalent of Java's import package.*?
Asked Answered
U

3

21

Or do I have to specifically enumerate every class that I import?

I'm just learning Clojure now, and it seems useful to be able to do something like this in the REPL:

(import '(java.io *))

Not that this is valid syntax, but it would be nice to have something that does the equivalent. It would save some typing, especially when tinkering around. In actual production code I always enumerate each class that I'm importing, regardless of the language, but it's pretty convenient not to have to do so.

Ungrudging answered 2/1, 2010 at 5:42 Comment(0)
C
21

Rich Hickey explains why it is not possible.

Cnossus answered 2/1, 2010 at 15:58 Comment(2)
Bummer. I appreciate his thinking on why it's not a good idea, but I'd prefer not to have the language constrain me like that, particularly when playing around in the REPL.Ungrudging
Note this is an explanation of why it is not possible to do efficiently at runtime. At compile time it can be made to work (obviously, since this is why you can do it in Java.....)Estey
P
2

Unless I missed an update, there is no way to wild card include packages into a namespace in Clojure currently.

Patroclus answered 2/1, 2010 at 6:53 Comment(0)
O
1

There seems to be no ways of doing that currently. The import macro is only there to import the specified classes into the current namespace. I've tried to write another macro to do what you want, but it doesn't appear to be possible with the class loader used by Clojure as it doesn't let us access package resources.

Offload answered 2/1, 2010 at 8:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.