#clojure log - Jun 14 2008

The Joy of Clojure
Main Clojure site
Google Group
IRC
List of all logged dates

2:51 asbjxrn: I got the latest svn version of clojure, and now I can't start the repl? Exception in thread "main" java.lang.NoSuchMethodError: clojure.lang.RT.cons(Ljava/lang/Object;Lclojure/lang/ISeq;)Lclojure/lang/ISeq;

2:52 I basically did a svn update, mvn install, java -cp clojure-lang-1.0-SNAPSHOT.jar clojure.lang.Repl

2:55 hoeck: asbjxrn: maybe you need to clean first

2:56 asbjxrn: That is "mvn clean" ?

2:56 hoeck: i dont know, i'm using ant, but i just deleted the 'classes' folder

2:57 asbjxrn: It did something at least. I'm just using mvn because it was described in one getting started doc I read when I started out with clojure.

2:58 Seems to have done the trick.

2:58 Thanks.

2:58 hoeck: but when 'mvn install' works, 'mvn clean' should work to, sounds all like 'make'

2:58 fine

2:59 :)

10:26 asbjxrn: The current lib.clj in Contrib seem to require that a lib is contained in one file, anyone working on a more sophisticated package/library system?

10:49 Chouser: you plan to have multiple .clj files contributing to the same namespace?

10:49 asbjxrn: Maybe, yes. If you have a library of some size, it could get messy to have it all in one big file I thought.

10:51 Chouser: I haven't done anything large enough in Clojure yet to worry about that.

10:51 asbjxrn: Of course, Rick has 2597 lines in boot.clj, which may set some sort of precedence... :)

10:54 I don't really have plans for anything real big now, but I would imagine people at some point might start building large libraries.

11:30 Lau_of_DK: Hey Chouser

12:22 rhickey, is there a curses lib available for Clojure atm ?

12:27 rhickey: Lau_of_DK: not for Clojure specifically, but maybe for Java

12:29 Lau_of_DK: k, I'll look into it

12:58 The only option seems to be a project on SourceForge - Generally do I just add these .jar files to my /project/directory and then I can import - or is there a better way of handling it ?

13:16 dudleyf: Lau_of_DK: You need to add them to your classpath

13:18 And if there's native JNI code, you need to add that to the Java library path

13:22 Lau_of_DK: There's a script to help with that for clojure at http://github.com/dudleyf/clojure-bin

13:50 Lau_of_DK: dudleyf, good stuff, thanks :)

13:52 But why is this stuff on its own github - I had the impression that all such additions, would be collected in the Clojure-Contrib ?

13:54 dudleyf: Lau_of_DK: Github was the easiest place for me

13:56 And I don't have a commit bit to clojure-contrib ;-)

13:58 Lau_of_DK: Okay my friend :)

14:12 dudleyf, if I dont specify the classpath when I execute the program, do you know what it defaults to ?

14:14 dudleyf: If CLOJURE_CLASSPATH isn't set, it defaults to "$CLOJURE_HOME/clojure.jar:."

14:15 Lau_of_DK: Im not sure I follow - if I "echo $CLOJURE_CLASSPATH" or "$CLOJURE_HOME", it doesnt look like theyre set at all

14:15 dudleyf: If the script is in a bin/ directory inside your clojure distribution, it'll figure out CLOJURE_HOME automatically

14:16 otherwise you need to set CLOJURE_HOME to the root of the Clojure distribution

14:16 Lau_of_DK: You want me to make .../clojure/bin? Because I only have /src and /target atm

14:17 dudleyf: Yep

14:17 Lau_of_DK: Does this approach make deployment more complex, or is there a simple way to distribute?

14:18 dudleyf: Well, the idea is that eventually this script or something like it will be part of the Clojure distribution

14:19 So that everyone won't have to distribute their own startup script with every application

14:19 Lau_of_DK: Ok - But just to put it in the simplest possible terms - I need to distribute a standard clojure.clj file, which depends on 1 custom .jar file - Can I just place them in the same directory?

14:23 dudleyf: You'll need to add the jar file to the classpath somehow

14:24 How are you launching Clojure to run your .clj file?

14:24 Lau_of_DK: java -cp clojure.jar clojure.lang.Script c.clj

14:25 dudleyf: Then you can just do:

14:25 java -cp clojure.jar:custom.jar clojure.lang.Script c.clj

14:33 Lau_of_DK: ok - and how would executing your script look compared to that?

14:37 dudleyf: assuming it was living in CLOJURE_HOME/bin, and that directory was in the path

14:37 clojure -cp custom.jar c.clj

14:38 Or, you could set CLOJURE_LIB to some directory, stick custom.jar in that directory, and just run

14:38 clojure c.clj

14:39 Lau_of_DK: alright - simplicity's the word

14:46 Chouser: Is (def) atomic and threadsafe?

14:49 Lau_of_DK: Interesting questions

14:49 -s

14:52 Chouser: I think it has to be, but I'm not sure I've ever heard Rich say that it is.

14:53 Lau_of_DK: Yea I think it is

14:53 (which probably means that it isnt)

14:59 Chouser: My ability to read Compiler.java is very limited, but it looks to me like it's doing some checks and then some more work, which is the classic non-atomic pattern.

15:00 and no locking that I can see, so not thread-safe.

15:00 Lau_of_DK: But what parts of a def could change, without it being a new def?

15:01 Chouser: I just want to know if two threads tried to do a (def foo ...) at the same time, is there any chance of ending up in a broken state, or if whichever goes last would get a clean win.

15:02 Lau_of_DK: rhickey, whats the verdict?

15:03 Chouser: hm, the code I'm looking at is during compilation perhaps? Var's bindRoot is synchronized, so maybe that's good enough.

15:45 Lau_of_DK: Maybe its faster just to try and create some race conditions and see what happends :)

16:44 Chouser: :-)

17:05 Lau_of_DK: Chouser, ignore this question, dont even read it: Any other emacs users here, that loose code-hints after CcCc'ing a process in the REPL?

18:46 regularfry: 'Ning all... Anyone using clojure+slime+emacs 22.1 on Windows?

Logging service provided by n01se.net