Re: Idiomatic way to include doc-string for multimethods.
Hi, the first form is idiomatic. This seems to be a problem in emacs. Sincerely Meikel -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Idiomatic way to include doc-string for multimethods.
Hi, BTW: the linked discussion pre-dates the time when docstring support à la defn was added to defmulti. Now that it is available, you should use it just as for defn. Sincerely Meikel -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
keyword with slash to string
Hello, weird, I know, but I have keywords in a map like this: :first/second I want to convert such a keyword to a string and I'm doing this with the name function. This doesn't work with a slash: (def x :first/second) (name x) second (The reason why I have such keywords at all is that data.json allows me to keywordize keys from a json map.) Is there a function that returns the full string first/second? Or even better: is there a function that transforms a map with keywords to a map with Strings as keys? The constraint is that keywords can have a slash. Thx. - Finn -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: keyword with slash to string
Hi, (defn to-string-keys [the-map] (into (empty the-map) (for [[k v] the-map] [(if-let [nspace (namespace k)] (str nspace / (name k)) (name k)) v]))) Sincerely Meikel -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: keyword with slash to string
I'm impressed. Thank you very much! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: keyword with slash to string
Hi, keywords can qualified - just as symbols. Compare: :foo, :user/foo, ::foo (assuming you are in a fresh REPL). You can also use namespace aliases: (require '[some.name.space :as short]) ::short/foo. (shameless-promotion self http://bit.ly/cqbm6F) Sincerely Meikel -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
ANN: Clojure/West CFP
Clojure/West is a new Clojure conference March 16-17th in San Jose, CA. The Clojure/West call for presentations is now open! For full details go here: http://clojurewest.org/call-for-presentations/ You can submit 50 minute sessions - speakers for these will receive hotel, airfare, and admission to the conference - see the page for more details. You may also submit 25, 50, or 80 minute unsessions. The unsessions may be anything outside the normal speaker+slides format - a guided discussion, a panel, a workshop, a working group, a hacker dojo, a BOF, etc. The facilitator/organizer of the unsession will receive free admission. The unsessions will be posted on the site in early January with open voting! We will also have lightning talks with an open call closer to the conference. All session and unsession talks must be submitted by January 6th! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
ANN: Clojure/West training March 12-15th
In the week leading up to the Clojure/West conference, we will have five training classes available: - Mar 12-13, 14-15 - Clojure Web with Chris Granger (creator of Noir, Pinot, Korma) - Mar 13-15 - Cascalog with Sam Ritchie (committer on Cascalog) - Mar 13-15 - Intro to Clojure with members of Clojure/core - Mar 14-15 - Pallet with Hugo Duncan and Antoni Batchelli (lead developers on Pallet) Lots more info here: http://clojurewest.org/training Registration will open soon Join the mailing list for future announcements: http://eepurl.com/gP51T -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Google chart library
On Sun, 4 Dec 2011 21:53:39 -0800 (PST), thenwithexpandedwingshesteershisflight mathn...@gmail.com wrote: Has anyone tried using the google chart library in Clojurescript ? http://code.google.com/apis/chart/interactive/docs/quick_start.html - it uses a dynamically-loaded-from-the-web api that I cannot work out quickly how to deal with. It's not google closure-style javascript by the looks of things. I don't know if anyone has or not, but you might have a look at projects that use google maps. It has the same sort of api loaded from the web. My little google map project is https://github.com/chrismgray/spot-tracks but I'm sure there are others as well. Cheers, Chris -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Unexpected behaviour in unchecked-multiply when using vars as arguments
(side note: what is different between Long/MAX_VALUE and the function call (Long/MAX_VALUE)? None. Both are syntax sugar for (. Long MAX_VALUE) It seems like unchecked-multiply doesn't like vars, but thats surprising. What am I doing wrong here? unchecked-multiply only does unchecked arithmetic when the arguments are primitive. Vars cannot have primitive values, they must be boxed as java.lang.Long. So it reverts to normal Clojure arithmetic. The unchecked-* functions are intended as a performance optimization when doing operations with primitives. -S -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Google chart library
Here's a Google Maps Clojurescript example of mine that might be helpful: https://github.com/sritchie/contour Cheers, Sam On Mon, Dec 5, 2011 at 6:48 AM, Chris Gray chrismg...@gmail.com wrote: On Sun, 4 Dec 2011 21:53:39 -0800 (PST), thenwithexpandedwingshesteershisflight mathn...@gmail.com wrote: Has anyone tried using the google chart library in Clojurescript ? http://code.google.com/apis/chart/interactive/docs/quick_start.html - it uses a dynamically-loaded-from-the-web api that I cannot work out quickly how to deal with. It's not google closure-style javascript by the looks of things. I don't know if anyone has or not, but you might have a look at projects that use google maps. It has the same sort of api loaded from the web. My little google map project is https://github.com/chrismgray/spot-tracks but I'm sure there are others as well. Cheers, Chris -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- Sam Ritchie, Twitter Inc 703.662.1337 @sritchie09 (Too brief? Here's why! http://emailcharter.org) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
[ANN] Clojure Koan-Engine 0.1.1
Hey all, I've separated out the macro magic behind the wonderful clojure-koanshttps://github.com/functional-koans/clojure-koans into its own project (clojure-koan-enginehttps://github.com/functional-koans/clojure-koan-engine), making it easy for anyone to write koans for any clojure library! Thanks to Colin Jones and Aaron Bedra for letting me help out on this. For those of you who haven't seen one yet, a clojure koan is pairing of doc-string and some clojure form that evaluates to something truthy once its blanks are filled in. For example (from the clojure sets koanshttps://github.com/functional-koans/clojure-koans/blob/master/src/koans/sets.clj ): (meditations **You can create a set in two ways. (= #{} (set __)) ) To make it really easy to start writing koans, I've also created a koan project template https://github.com/functional-koans/koan-template and aLeiningen pluginhttps://github.com/functional-koans/lein-koan. The latter allows you to add koans even to existing projects, providing a sort of built-in tutorial that encourages users to dig into the code. The READMEs are bountiful! You should partake of them. Finally, here are a few placeholder projects I've created with the template generator that I intend to populate in the next month: https://github.com/sritchie/cascalog-koans https://github.com/sritchie/core.logic-koans https://github.com/sritchie/core.match-koans Enjoy! Sam -- Sam Ritchie, Twitter Inc 703.662.1337 @sritchie09 (Too brief? Here's why! http://emailcharter.org) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: A few enhancements
I've added a new ticket http://dev.clojure.org/jira/browse/CLJ-891 to jira for adding the ability to make (symbol some-ns bar) work. That tackles half of the issue in #4, and reduces your example to just (symbol *ns* (name sym)). -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: [ANN] Clojure Koan-Engine 0.1.1
On Mon, Dec 5, 2011 at 11:10 AM, Sam Ritchie sritchi...@gmail.com wrote: Hey all, I've separated out the macro magic behind the wonderful clojure-koanshttps://github.com/functional-koans/clojure-koans into its own project (clojure-koan-enginehttps://github.com/functional-koans/clojure-koan-engine), making it easy for anyone to write koans for any clojure library! Thanks to Colin Jones and Aaron Bedra for letting me help out on this. For those of you who haven't seen one yet, a clojure koan is pairing of doc-string and some clojure form that evaluates to something truthy once its blanks are filled in. For example (from the clojure sets koanshttps://github.com/functional-koans/clojure-koans/blob/master/src/koans/sets.clj ): (meditations **You can create a set in two ways. (= #{} (set __)) ) To make it really easy to start writing koans, I've also created a koan project template https://github.com/functional-koans/koan-template and aLeiningen pluginhttps://github.com/functional-koans/lein-koan. The latter allows you to add koans even to existing projects, providing a sort of built-in tutorial that encourages users to dig into the code. The READMEs are bountiful! You should partake of them. Finally, here are a few placeholder projects I've created with the template generator that I intend to populate in the next month: https://github.com/sritchie/cascalog-koans https://github.com/sritchie/core.logic-koans https://github.com/sritchie/core.match-koans Enjoy! Sam -- Sam Ritchie, Twitter Inc 703.662.1337 @sritchie09 Very cool. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Clojure Koan-Engine 0.1.1
Really great. Looking forward to boring everyone with contracts- koans. The next step is to have this project spit out a 4clojure- esque site automatically. ;-) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Ending or closing malformed line in REPL
Hello, While I am going through the Programming Clojure 2nd edition book, I am entering the code into a REPL. Sometimes when entering the code I enter a typo and hit enter and cannot get the REPL to close that malformed line. It often happens with an errant closing ] or ). Frequently this occurs when I go back in the history to edit a previous line to edit, explore and play with it. The closing paren is already in the line and I accidentally hit enter. I would love to know how I can cause that line to execute, and give me the error, so that I can go on and try again. Currently I end up having to exit the REPL and create a new one. If that is the only thing I can do, that is fine. I just wanted to learn if there was some other means of completing that line. Thanks. Jimmie -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Unexpected behaviour in unchecked-multiply when using vars as arguments
2011/12/5 Stuart Sierra the.stuart.sie...@gmail.com (side note: what is different between Long/MAX_VALUE and the function call (Long/MAX_VALUE)? None. Both are syntax sugar for (. Long MAX_VALUE) It seems like unchecked-multiply doesn't like vars, but thats surprising. What am I doing wrong here? unchecked-multiply only does unchecked arithmetic when the arguments are primitive. Vars cannot have primitive values, they must be boxed as java.lang.Long. So it reverts to normal Clojure arithmetic. The unchecked-* functions are intended as a performance optimization when doing operations with primitives. OK, then the problem seems to be to refer to primitives with symbols with unchecked-* functions. How do I do that? The loop where high performance is required is hash = -3750763034362895579 for each byte b in array-of-bytes-to-be-hashed do : hash = hash * 1099511628211 (without caring about overflowing) hash = hash ^ byte return hash and I really cannot see how to do this without using something that hold values somehow, but how do I bypass the numeric stack in clojure? I have tried with the following approach (just for the first step): fnv (def hash (Long. -3750763034362895579)) #'fnv/hash fnv (def hash2 (Long. (unchecked-multiply hash 1099511628211))) ; Evaluation aborted. (because of integer overflow) How should I do to get it working correctly? There simply must be a way to store primitives, but I'm apparently have gotten something wrong here. (the hash in question is the quite quick FNV-hash, which is in public domain, nice and everything) /Linus -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Unexpected behaviour in unchecked-multiply when using vars as arguments
You can't store primitives in vars. But you can cast their contents to primitives with (long ...) (int ...) etc David On Mon, Dec 5, 2011 at 12:16 PM, Linus Ericsson oscarlinuserics...@gmail.com wrote: 2011/12/5 Stuart Sierra the.stuart.sie...@gmail.com (side note: what is different between Long/MAX_VALUE and the function call (Long/MAX_VALUE)? None. Both are syntax sugar for (. Long MAX_VALUE) It seems like unchecked-multiply doesn't like vars, but thats surprising. What am I doing wrong here? unchecked-multiply only does unchecked arithmetic when the arguments are primitive. Vars cannot have primitive values, they must be boxed as java.lang.Long. So it reverts to normal Clojure arithmetic. The unchecked-* functions are intended as a performance optimization when doing operations with primitives. OK, then the problem seems to be to refer to primitives with symbols with unchecked-* functions. How do I do that? The loop where high performance is required is hash = -3750763034362895579 for each byte b in array-of-bytes-to-be-hashed do : hash = hash * 1099511628211 (without caring about overflowing) hash = hash ^ byte return hash and I really cannot see how to do this without using something that hold values somehow, but how do I bypass the numeric stack in clojure? I have tried with the following approach (just for the first step): fnv (def hash (Long. -3750763034362895579)) #'fnv/hash fnv (def hash2 (Long. (unchecked-multiply hash 1099511628211))) ; Evaluation aborted. (because of integer overflow) How should I do to get it working correctly? There simply must be a way to store primitives, but I'm apparently have gotten something wrong here. (the hash in question is the quite quick FNV-hash, which is in public domain, nice and everything) /Linus -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Unexpected behaviour in unchecked-multiply when using vars as arguments
David and Stu to the rescue. Of course that's the way to do it. Thank you both, /Linus 2011/12/5 David Nolen dnolen.li...@gmail.com You can't store primitives in vars. But you can cast their contents to primitives with (long ...) (int ...) etc David On Mon, Dec 5, 2011 at 12:16 PM, Linus Ericsson oscarlinuserics...@gmail.com wrote: 2011/12/5 Stuart Sierra the.stuart.sie...@gmail.com (side note: what is different between Long/MAX_VALUE and the function call (Long/MAX_VALUE)? None. Both are syntax sugar for (. Long MAX_VALUE) It seems like unchecked-multiply doesn't like vars, but thats surprising. What am I doing wrong here? unchecked-multiply only does unchecked arithmetic when the arguments are primitive. Vars cannot have primitive values, they must be boxed as java.lang.Long. So it reverts to normal Clojure arithmetic. The unchecked-* functions are intended as a performance optimization when doing operations with primitives. OK, then the problem seems to be to refer to primitives with symbols with unchecked-* functions. How do I do that? The loop where high performance is required is hash = -3750763034362895579 for each byte b in array-of-bytes-to-be-hashed do : hash = hash * 1099511628211 (without caring about overflowing) hash = hash ^ byte return hash and I really cannot see how to do this without using something that hold values somehow, but how do I bypass the numeric stack in clojure? I have tried with the following approach (just for the first step): fnv (def hash (Long. -3750763034362895579)) #'fnv/hash fnv (def hash2 (Long. (unchecked-multiply hash 1099511628211))) ; Evaluation aborted. (because of integer overflow) How should I do to get it working correctly? There simply must be a way to store primitives, but I'm apparently have gotten something wrong here. (the hash in question is the quite quick FNV-hash, which is in public domain, nice and everything) /Linus -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Unexpected behaviour in unchecked-multiply when using vars as arguments
On Mon, Dec 5, 2011 at 5:29 PM, Linus Ericsson oscarlinuserics...@gmail.com wrote: David and Stu to the rescue. Of course that's the way to do it. Not sure if this is what you want, but Clojure 1.3 introduced ^:const. This lets you store a primitive constant value: (def ^:const hash -3750763034362895579) Then you can use hash anywhere as if you'd inlined the value. hash will be stored as a primitive, and will work with unchecked-multiply. -- Dave -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Ending or closing malformed line in REPL
My apologies for the noise. I had entered (interleave (whole-numbers) [A B C] [) on the repl and hit enter. When I went back and tried again and looked and looked. The problem is the open string prior to what appears to be a closing paren. In this instance it isn't a closing paren but a part of the string which is waiting to be closed. When I entered the closing and then closing paren. I was fine. I should have provided more context in the original post and you could have seen my error. Again, my apologies. Jimmie On Dec 5, 11:03 am, jlhouchin jlhouc...@gmail.com wrote: Hello, While I am going through the Programming Clojure 2nd edition book, I am entering the code into a REPL. Sometimes when entering the code I enter a typo and hit enter and cannot get the REPL to close that malformed line. It often happens with an errant closing ] or ). Frequently this occurs when I go back in the history to edit a previous line to edit, explore and play with it. The closing paren is already in the line and I accidentally hit enter. I would love to know how I can cause that line to execute, and give me the error, so that I can go on and try again. Currently I end up having to exit the REPL and create a new one. If that is the only thing I can do, that is fine. I just wanted to learn if there was some other means of completing that line. Thanks. Jimmie -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
swank-cdt problems
I'd like to be using swank-cdt, but I'm running into the tools.jar problem warning: unabled to add tools.jar to classpath. CDT 1.4.0a startup failed: #RuntimeException java.lang.RuntimeException: java.io.IOException: Not a debuggee, or not listening for debugger to attach In project.clj, I've tried :extra-classpath-dirs [/usr/lib/jvm/java-6-sun/lib/tools.jar] and :dev-resources-path /usr/lib/jvm/java-6-openjdk/lib/tools.jar Neither worked I've also tried symlinking tools.jar as mentioned here http://groups.google.com/group/clojure/msg/70236500461be9c6?dmode=source I have swank 1.4.0-SNAPSHOT installed as a leiningen plugin and I run it in Emacs23 using M-x clojure-jack-in Any suggestions? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: swank-cdt problems
After a bit more messing around - the problem is a little different... I fixed the swank plugin version to 1.4.0-SNAPSHOT and updated clojure- mode to 1.11.4 Now I get error in process filter: Search failed: (run-hooks 'slime-load- hook) ; on port when I try to run clojure-jack-in Thoughts? On Dec 5, 1:32 pm, AndyK andy.kri...@gmail.com wrote: I'd like to be using swank-cdt, but I'm running into the tools.jar problem warning: unabled to add tools.jar to classpath. CDT 1.4.0a startup failed: #RuntimeException java.lang.RuntimeException: java.io.IOException: Not a debuggee, or not listening for debugger to attach In project.clj, I've tried :extra-classpath-dirs [/usr/lib/jvm/java-6-sun/lib/tools.jar] and :dev-resources-path /usr/lib/jvm/java-6-openjdk/lib/tools.jar Neither worked I've also tried symlinking tools.jar as mentioned herehttp://groups.google.com/group/clojure/msg/70236500461be9c6?dmode=source I have swank 1.4.0-SNAPSHOT installed as a leiningen plugin and I run it in Emacs23 using M-x clojure-jack-in Any suggestions? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: swank-cdt problems
this error: java.io.IOException: Not a debuggee, or not listening for debugger to attach is usually caused by not having this line in your project.clj: :jvm-opts [-agentlib:jdwp=transport=dt_socket,server=y,suspend=n] if that doesn't fix your problem, send me your project.clj and the name of your OS. Also, I never use clojure-jack-in, so that may also be a part of the problem. I'll look into it, but in the meantime, can you also try using lein swank and then M-x slime-connect. On Dec 5, 10:32 am, AndyK andy.kri...@gmail.com wrote: I'd like to be using swank-cdt, but I'm running into the tools.jar problem warning: unabled to add tools.jar to classpath. CDT 1.4.0a startup failed: #RuntimeException java.lang.RuntimeException: java.io.IOException: Not a debuggee, or not listening for debugger to attach In project.clj, I've tried :extra-classpath-dirs [/usr/lib/jvm/java-6-sun/lib/tools.jar] and :dev-resources-path /usr/lib/jvm/java-6-openjdk/lib/tools.jar Neither worked I've also tried symlinking tools.jar as mentioned herehttp://groups.google.com/group/clojure/msg/70236500461be9c6?dmode=source I have swank 1.4.0-SNAPSHOT installed as a leiningen plugin and I run it in Emacs23 using M-x clojure-jack-in Any suggestions? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Unexpected behaviour in unchecked-multiply when using vars as arguments
Thats a great feature as well! It is very good not to clutter the code with magic constants, but to be able to name them in a sane way. Thank you all again, /Linus Den 5 dec 2011 18:38 skrev David Powell djpow...@djpowell.net: On Mon, Dec 5, 2011 at 5:29 PM, Linus Ericsson oscarlinuserics...@gmail.com wrote: David and Stu to the rescue. Of course that's the way to do it. Not sure if this is what you want, but Clojure 1.3 introduced ^:const. This lets you store a primitive constant value: (def ^:const hash -3750763034362895579) Then you can use hash anywhere as if you'd inlined the value. hash will be stored as a primitive, and will work with unchecked-multiply. -- Dave -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
core.logic and arithmetic equations?
I'm wondering if core.logic can be used to solve equations over reals or rationals; all the examples I've seen are with with integers and 'Oleg numbers'. I'm talking about something like this: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_sec_3.3.5 What spurred me was this week's unit of the Stanford AI class, where you have to get multiple values out of an equation like X1 = x2* (f/ Z). Seems like a case for relational programming, but it's not with LVars! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: core.logic and arithmetic equations?
I'm a third (?) of the way through implementing cKanren which brings Constraint Logic Programming (CLP) to core.logic. It going a bit slower than expected since this is not a simple port - I'm making quite a few representation / efficiency changes. cKanren supports arithmetic w/ integers, CLP(FD). It also supports CLP(Tree), which is constraint logic programming over tree terms (Clojure persistent data structures). Once cKanren is up and running it shouldn't be hard for someone to extend core.logic to handle reals - CLP(R). David On Mon, Dec 5, 2011 at 4:08 PM, nchurch nchubr...@gmail.com wrote: I'm wondering if core.logic can be used to solve equations over reals or rationals; all the examples I've seen are with with integers and 'Oleg numbers'. I'm talking about something like this: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_sec_3.3.5 What spurred me was this week's unit of the Stanford AI class, where you have to get multiple values out of an equation like X1 = x2* (f/ Z). Seems like a case for relational programming, but it's not with LVars! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: core.logic and arithmetic equations?
David: Very good news. This stuff is awesome as is, but still really excited to see cKanren in all its optimized glory! Thanks for all your work on it. Nick. On Dec 5, 4:13 pm, David Nolen dnolen.li...@gmail.com wrote: I'm a third (?) of the way through implementing cKanren which brings Constraint Logic Programming (CLP) to core.logic. It going a bit slower than expected since this is not a simple port - I'm making quite a few representation / efficiency changes. cKanren supports arithmetic w/ integers, CLP(FD). It also supports CLP(Tree), which is constraint logic programming over tree terms (Clojure persistent data structures). Once cKanren is up and running it shouldn't be hard for someone to extend core.logic to handle reals - CLP(R). David On Mon, Dec 5, 2011 at 4:08 PM, nchurch nchubr...@gmail.com wrote: I'm wondering if core.logic can be used to solve equations over reals or rationals; all the examples I've seen are with with integers and 'Oleg numbers'. I'm talking about something like this: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_sec_3.3.5 What spurred me was this week's unit of the Stanford AI class, where you have to get multiple values out of an equation like X1 = x2* (f/ Z). Seems like a case for relational programming, but it's not with LVars! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: on lisp and scheme macros
On Sat, Dec 03 2011, Stuart Sierra wrote: I think that Common Lisp macros are, strictly speaking, more powerful than Scheme macros, but I don't have a citation. That's only true for syntax-rules macros. syntax-case macros, which most schemes provide and are required by R6RS, are, strictly speaking, more powerful than CL macros. jao -- I went to the woods because I wished to live deliberately, to front only the essential facts of life, and see if I could not learn what it had to teach, and not, when I came to die, discover that I had not lived. -Henry David Thoreau, naturalist and author (1817-1862) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
No longer able to write a UUID to Postgres with ClojureQL
For those of you following along at home, my spate of bad luck continues…. A week or so ago, I was happily writing and reading UUIDs into Postgres with ClojureQL. Then, all of a sudden, it stopped working, and I can't figure out why. Shame on me for not being more careful about documenting when it worked, and what changed. And a lot of stuff changed in the interim… So I wrote small example project to demonstrate the problem: I have verified that I can write UUIDs into Postgres with java.jdbc itself, so that is evidence that the issue is not with java.jdbc, the Postgres JDBC library, nor my Postgres server. (def u1 (. UUID (randomUUID))) (def u2 (. UUID (randomUUID))) (defn write-uuid-jdbc [uid name] (sql/with-connection postgres-db (sql/insert-values :testuuid [:uid :name] [uid name]))) (defn read-table-clojureql [] @(table postgres-db :testuuid)) (defn write-uuid-clojureql [uid name] (conj! (table postgres-db :testuuid) {:uid uid :name name})) This illustrates the problem: (write-uuid-jdbc u1 jdbc) works. (write-uuid-clojureql u2 clojureql) throws the following exception: Bad value for type int : d812274a-a1ff-4ce5-962e-005f3c893459 [Thrown class org.postgresql.util.PSQLException] Restarts: 0: [QUIT] Quit to the SLIME top level Backtrace: 0: org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2759) 1: org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2003) Now write u2 with jdbc: (write-uuid-jdbc u2 jdbc) And read the entire table back out using ClojureQL: (read-table-clojureql) ({:name jdbc, :uid #UUID 2896de2b-2c48-40ab-83a6-cee6c2be16cd} {:name jdbc, :uid #UUID d812274a-a1ff-4ce5-962e-005f3c893459}) So ClojureQL can certainly read the table, and return the UUIDs, but can't write them… Here is the relevant part of project.clj: :dependencies [[org.clojure/clojure 1.2.1] [postgresql/postgresql 9.1-901.jdbc4] [org.clojure/java.jdbc 0.1.1] [clojureql 1.1.0-SNAPSHOT] ]) I woud definitely appreciate/welcome any suggestions about why this is happening, or how it might be fixed…. I've pushed this example test case/project up to GitHub in case anyone wants to poke around: dcj/postgres-uuid-test Don -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Clojure + Java Interop + Gnome Interop -- KeyPressEvent fails
On 12/03/2011 10:16 AM, Henrik Lundahl wrote: Hi Rett There is no such type as org.gnome.gtk.Window$__KeyPressEvents, at least not in 4.1 of the Java Gnome API http://java-gnome.sourceforge.net/doc/api/4.1/org/gnome/gtk/Window.html. org.gnome.gtk.Window$__KeyPressEvent exists though. I'd guess you have a typo somewhere, perhaps in the imports? Not a terribly auspicious first post for technical assistance, I'm afraid. KeyPressEvents was indeed a typo on my part. The two changes that seemed to make a difference are to change 'KeyPressEvents' to 'KeyPressEvent' and to separate the proxy statements into two connect clauses. I'm not sure why that was necessary, but the following did work. (import '(org.gnome.gtk Button Button$Clicked Gtk Label VBox Widget Window Window$DeleteEvent Widget$KeyPressEvent)) (Gtk/init (make-array String 0)) ;(defonce gtk-init (.init Gtk (make-array String 0))) (defn pushme [] (let [w (Window.) v (VBox. false 3) l (Label. Go ahead:\nMake my day) b (Button. Press me!)] (.connect b (proxy [Button$Clicked] [] (onClicked [source] (println (str I was clicked: (.getLabel b))) (println (str I was clicked: source)) ))) (.connect w (proxy [Widget$KeyPressEvent] [] (onKeyPressEvent [source event] (println (str Key was pressed: (.toString (.getKeyval event false) )) (.connect w (proxy [Window$DeleteEvent] [] (onDeleteEvent [source event] (Gtk/mainQuit) false) (onDeleteEvents [source event] (Gtk/mainQuit) false) )) (.add v l) (.add v b) (.add w v) (.setDefaultSize w 200 100) (.setTitle w Push Me) (.showAll w) (Gtk/main) ) ) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Ending or closing malformed line in REPL
On Mon, 2011-12-05 at 09:51 -0800, jlhouchin wrote: When I entered the closing and then closing paren. I was fine. You may also try backspace; unusually for a REPL, that works. -- Stephen Compall ^aCollection allSatisfy: [:each|aCondition]: less is better -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: No longer able to write a UUID to Postgres with ClojureQL
If it helps someone debug this for Don (since he and I discussed this off-list): The stack trace from ClojureQL originates in its function to return generated keys and it's calling .getInt on the (generated) key which fails because it's a UUID. So the question is probably: why is ClojureQL assuming all generated keys are integers? As for what might have changed in Don's setup, I wondered if the :uid column definition had been changed to indicate (to ClojureQL) that it is a potentially generated key? (is there a ClojureQL mailing list?) Sean On Mon, Dec 5, 2011 at 3:27 PM, Don Jackson cloj...@clark-communications.com wrote: For those of you following along at home, my spate of bad luck continues…. A week or so ago, I was happily writing and reading UUIDs into Postgres with ClojureQL. Then, all of a sudden, it stopped working, and I can't figure out why. Shame on me for not being more careful about documenting when it worked, and what changed. And a lot of stuff changed in the interim… So I wrote small example project to demonstrate the problem: I have verified that I can write UUIDs into Postgres with java.jdbc itself, so that is evidence that the issue is not with java.jdbc, the Postgres JDBC library, nor my Postgres server. (def u1 (. UUID (randomUUID))) (def u2 (. UUID (randomUUID))) (defn write-uuid-jdbc [uid name] (sql/with-connection postgres-db (sql/insert-values :testuuid [:uid :name] [uid name]))) (defn read-table-clojureql [] @(table postgres-db :testuuid)) (defn write-uuid-clojureql [uid name] (conj! (table postgres-db :testuuid) {:uid uid :name name})) This illustrates the problem: (write-uuid-jdbc u1 jdbc) works. (write-uuid-clojureql u2 clojureql) throws the following exception: Bad value for type int : d812274a-a1ff-4ce5-962e-005f3c893459 [Thrown class org.postgresql.util.PSQLException] Restarts: 0: [QUIT] Quit to the SLIME top level Backtrace: 0: org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2759) 1: org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2003) Now write u2 with jdbc: (write-uuid-jdbc u2 jdbc) And read the entire table back out using ClojureQL: (read-table-clojureql) ({:name jdbc, :uid #UUID 2896de2b-2c48-40ab-83a6-cee6c2be16cd} {:name jdbc, :uid #UUID d812274a-a1ff-4ce5-962e-005f3c893459}) So ClojureQL can certainly read the table, and return the UUIDs, but can't write them… Here is the relevant part of project.clj: :dependencies [[org.clojure/clojure 1.2.1] [postgresql/postgresql 9.1-901.jdbc4] [org.clojure/java.jdbc 0.1.1] [clojureql 1.1.0-SNAPSHOT] ]) I woud definitely appreciate/welcome any suggestions about why this is happening, or how it might be fixed…. I've pushed this example test case/project up to GitHub in case anyone wants to poke around: dcj/postgres-uuid-test Don -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Ending or closing malformed line in REPL
On 12/5/2011 7:19 PM, Stephen Compall wrote: On Mon, 2011-12-05 at 09:51 -0800, jlhouchin wrote: When I entered the closing and then closing paren. I was fine. You may also try backspace; unusually for a REPL, that works. I tried that. But as I was on a new line after hitting the enter/ return key. It wouldn't go back to the previous line. I would have loved that it did. That the backspace could backspace over newlines. That would be sweet. Now, I do not know if there are any difference in repls or if there is only one repl. I was using the default 1.3 repl. Thanks. Jimmie -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Google chart library
cheers guys that's very helpful On Dec 6, 2:43 am, Sam Ritchie sritchi...@gmail.com wrote: Here's a Google Maps Clojurescript example of mine that might be helpful:https://github.com/sritchie/contour Cheers, Sam On Mon, Dec 5, 2011 at 6:48 AM, Chris Gray chrismg...@gmail.com wrote: On Sun, 4 Dec 2011 21:53:39 -0800 (PST), thenwithexpandedwingshesteershisflight mathn...@gmail.com wrote: Has anyone tried using the google chart library in Clojurescript ? http://code.google.com/apis/chart/interactive/docs/quick_start.html - it uses a dynamically-loaded-from-the-web api that I cannot work out quickly how to deal with. It's not google closure-style javascript by the looks of things. I don't know if anyone has or not, but you might have a look at projects that use google maps. It has the same sort of api loaded from the web. My little google map project is https://github.com/chrismgray/spot-tracksbut I'm sure there are others as well. Cheers, Chris -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- Sam Ritchie, Twitter Inc 703.662.1337 @sritchie09 (Too brief? Here's why!http://emailcharter.org) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Ending or closing malformed line in REPL
2011/12/6 jlhouchin jlhouc...@gmail.com: On 12/5/2011 7:19 PM, Stephen Compall wrote: On Mon, 2011-12-05 at 09:51 -0800, jlhouchin wrote: When I entered the closing and then closing paren. I was fine. You may also try backspace; unusually for a REPL, that works. I tried that. But as I was on a new line after hitting the enter/ return key. It wouldn't go back to the previous line. I would have loved that it did. That the backspace could backspace over newlines. That would be sweet. Now, I do not know if there are any difference in repls or if there is only one repl. I was using the default 1.3 repl. There are also REPLs embedded in all the major editors / IDEs. As a shameless plug, I'd say that the namespace of Counterclockwise, a Clojure Feature for Eclipse, does the job quite well (input history, syntax coloration, code completion, hyperlinks, non-blocking sends, multiline input area with auto-indentation, namespace browser with search box documentation on mouse over / go to source on mouse double click, etc.) If you're interested, go to its Getting Started page : http://dev.clojure.org/display/doc/Getting+Started+with+Eclipse+and+Counterclockwise If you do not know / like Eclipse, then just start again from this general starting page to see what best suits your needs: http://dev.clojure.org/display/doc/Getting+Started -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Ending or closing malformed line in REPL
2011/12/6 Laurent PETIT laurent.pe...@gmail.com: 2011/12/6 jlhouchin jlhouc...@gmail.com: On 12/5/2011 7:19 PM, Stephen Compall wrote: On Mon, 2011-12-05 at 09:51 -0800, jlhouchin wrote: When I entered the closing and then closing paren. I was fine. You may also try backspace; unusually for a REPL, that works. I tried that. But as I was on a new line after hitting the enter/ return key. It wouldn't go back to the previous line. I would have loved that it did. That the backspace could backspace over newlines. That would be sweet. Now, I do not know if there are any difference in repls or if there is only one repl. I was using the default 1.3 repl. There are also REPLs embedded in all the major editors / IDEs. As a shameless plug, I'd say that the namespace of Counterclockwise, a s/namespace/REPL/ Clojure Feature for Eclipse, does the job quite well (input history, syntax coloration, code completion, hyperlinks, non-blocking sends, multiline input area with auto-indentation, namespace browser with search box documentation on mouse over / go to source on mouse double click, etc.) If you're interested, go to its Getting Started page : http://dev.clojure.org/display/doc/Getting+Started+with+Eclipse+and+Counterclockwise If you do not know / like Eclipse, then just start again from this general starting page to see what best suits your needs: http://dev.clojure.org/display/doc/Getting+Started -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Ending or closing malformed line in REPL
Clojure REPL in Counterclockwise (http://code.google.com/p/counterclockwise/) is pretty nice. And yes, allowing multi-line expressions and having no way to edit them is annoying. On Tue, Dec 6, 2011 at 11:45 AM, jlhouchin jlhouc...@gmail.com wrote: On 12/5/2011 7:19 PM, Stephen Compall wrote: On Mon, 2011-12-05 at 09:51 -0800, jlhouchin wrote: When I entered the closing and then closing paren. I was fine. You may also try backspace; unusually for a REPL, that works. I tried that. But as I was on a new line after hitting the enter/ return key. It wouldn't go back to the previous line. I would have loved that it did. That the backspace could backspace over newlines. That would be sweet. Now, I do not know if there are any difference in repls or if there is only one repl. I was using the default 1.3 repl. Thanks. Jimmie -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- Petr Gladkikh -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en