2008-06-14
| 02: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; |
| 02:52 | asbjxrn | I basically did a svn update, mvn install, java -cp clojure-lang-1.0-SNAPSHOT.jar clojure.lang.Repl |
| 02:55 | hoeck | asbjxrn: maybe you need to clean first |
| 02:56 | asbjxrn | That is "mvn clean" ? |
| 02:56 | hoeck | i dont know, i'm using ant, but i just deleted the 'classes' folder |
| 02: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. |
| 02:58 | asbjxrn | Seems to have done the trick. |
| 02:58 | asbjxrn | Thanks. |
| 02:58 | hoeck | but when 'mvn install' works, 'mvn clean' should work to, sounds all like 'make' |
| 02:58 | hoeck | fine |
| 02:59 | hoeck | :) |
| 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 | asbjxrn | 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 | Lau_of_DK | 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 | Lau_of_DK | 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 | dudleyf | And if there's native JNI code, you need to add that to the Java library path |
| 13:22 | dudleyf | 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 | Lau_of_DK | 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 | dudleyf | And I don't have a commit bit to clojure-contrib ;-) |
| 13:58 | Lau_of_DK | Okay my friend :) |
| 14:12 | Lau_of_DK | 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 | dudleyf | 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 | dudleyf | 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 | dudleyf | 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 | dudleyf | 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 | dudleyf | clojure -cp custom.jar c.clj |
| 14:38 | dudleyf | Or, you could set CLOJURE_LIB to some directory, stick custom.jar in that directory, and just run |
| 14:38 | dudleyf | 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 | Lau_of_DK | -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 | Lau_of_DK | (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 | Chouser | 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? |