Re: How to add extend print-method without screwing up ?
Hi, On Jan 5, 11:14 pm, Gabi wrote: > This think could be solved easily if defmethod supported hierarchy as > arg (or in meta). This doesn't even solve your problem, since the hierarchy is used to find out *which* method should be called. So hooking a hierarchy on a method doesn't really help. 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
parsing/processing of big xml files...
Hello all I have question about processing big XML files with lazy-xml. I'm trying to analyze StackOverflow dumps with Clojure, and when analyzing 1.6Gb XML file with posts, i get java stack overflow, although i provide enough memory for java (1Gb of heap). My code looks following way (ns stackoverflow (:import java.io.File) (:use clojure.contrib.lazy-xml)) (def so-base "/data-sets/stack-overflow/2009-12/122009 SO") (def posts-file (File. (str so-base "/posts.xml"))) (defn count-post-entries [xml] (loop [counter 0 lst xml] (if (nil? lst) counter (let [elem (first lst) rst (rest lst)] (if (and (= (:type elem) :start-element) (= (:name elem) :row)) (recur (+ 1 counter) rst) (recur counter rst)) and run it with (stackoverflow/count-post-entries (clojure.contrib.lazy-xml/parse-seq stackoverflow/posts-file)) I don't collect real data here, so i expect, that clojure will discard already processed data. The same problem with stack overflow happens, when i use reduce: (reduce (fn [counter elem] (if (and (= (:type elem) :start-element) (= (:name elem) :row)) (+ 1 counter) counter)) 0 (clojure.contrib.lazy-xml/parse-seq stackoverflow/posts-file)) So, question is open - how to process big xml files in constant space? (if I won't collect much data during processing) -- With best wishes, Alex Ott, MBA http://alexott.blogspot.com/ http://xtalk.msk.su/~ott/ http://alexott-ru.blogspot.com/ -- 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
peepcode screencasts
Hey guys, I think it is worth convincing peepcode to develop more Clojure screencasts, like this awesome one[1] from Phil Hagelberg. If you have some time, please show them your enthusiasm by voting up here: http://suggestions.peepcode.com/pages/15-general/suggestions/349533-more-lisp-clojure-screencasts-?ref=title Thanks! [1]: http://peepcode.com/products/functional-programming-with-clojure -- 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: peepcode screencasts
I would add the suggestion to buy the current screencast, as it is excellent and would go an extra mile than the vote 8) PS. I just loved the grue reference 8) -- 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: Having difficulties with compilation in slime, emacs and clojure-project
Rob Lachlan writes: > I have src and test in the directory I'm passing in. The problem > however, seems to be on the emacs end. In the mini-buffer when I > enter in Project root: and press return, the cursor > just moves to the next line in the mini- buffer. So I think that the > clojure-project function is getting stuck right at that spot. That's a bug that was fixed many months ago; sounds like you need to update your version of swank-clojure: http://github.com/technomancy/swank-clojure Installation is handled through Emacs' package manager: http://tromey.com/elpa/install.html -Phil -- 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: Leiningen uberjar: excluding dev-dependencies; new minus-clojure task
On Jan 2, 12:35 am, Phil Hagelberg wrote: > I'm a little reluctant to make calculating the classpath any more > complicated than it currently is since that logic needs to be duplicated > in a few places, but I agree that the current situation is not great. > > Another idea would be to write a hidden blacklist file when fetching the > dev dependencies. The uberjar could then check that to know which jars > to skip. > > I'm not sure which approach I prefer... thoughts? I thought about the latter, too. I don't currently understand the maven stuff enough to know how dependencies get resolved into actual jarfile names enough to do this (there's the DependenciesTask &c. business in leiningen/deps.clj), but I'd be happy to investigate, esp. if someone were willing to point me in the right direction. > > I was working on uberjar because I want to write a similar task as a > > plugin, which is an uberjar without clojure & clojure-contrib > > included, so that I can drop a project & its dependencies in my local > > Clojure development environment, e.g. my Clojure saxon wrapper library > > as well as the Java Saxon jars it depends on. Anyone else have this > > use case? > > I'm not sure I understand. Why don't you just open your saxon wrapper > project in your IDE directly rather than adding an uberjar generated > from it? Plus if you put clojure and contrib on the classpath before > youruberjar, then the versions in your uberjar will be shadowed. I wasn't clear. By "development environment," I meant my `clj` script, not any particular project per se. In my clj script, I specify a place on the filesystem to drop jars that I want on the classpath when its invoked; I know others have setups like this. I always put clojure & clojure-contrib on the classpath, so I simply want the Clojure library & any of its dependencies zipped up in a sort of uberjar-minus-clojure (to avoid shadowing, as you mention). I suppose I could create a leiningen project for my clj script, specifying libraries I want as dependencies & then just putting its uberjar on the classpath, but this requires that the libraries are available in maven repos. Have other leiningen users solved this? Thanks, Perry -- 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: parsing/processing of big xml files...
Hi Alex, On Wed, Jan 6, 2010 at 9:06 AM, Alex Ott wrote: > Hello all > > I have question about processing big XML files with lazy-xml. I'm trying to > analyze > StackOverflow dumps with Clojure, and when analyzing 1.6Gb XML file with > posts, i get java stack overflow, although i provide enough memory for java > (1Gb of heap). Someone asked this question a while back, and a suggestion given was to use Mark Triggs' XOM wrapper: http://github.com/marktriggs/xml-picker-seq Thread: http://groups.google.com/group/clojure/browse_thread/thread/365ca7aaaf8d55b7?pli=1 Cheers, Graham > > My code looks following way > > > (ns stackoverflow > (:import java.io.File) > (:use clojure.contrib.lazy-xml)) > > (def so-base "/data-sets/stack-overflow/2009-12/122009 SO") > > (def posts-file (File. (str so-base "/posts.xml"))) > > (defn count-post-entries [xml] > (loop [counter 0 > lst xml] > (if (nil? lst) > counter > (let [elem (first lst) > rst (rest lst)] > (if (and (= (:type elem) :start-element) (= (:name elem) :row)) > (recur (+ 1 counter) rst) > (recur counter rst)) > > and run it with > > (stackoverflow/count-post-entries (clojure.contrib.lazy-xml/parse-seq > stackoverflow/posts-file)) > > I don't collect real data here, so i expect, that clojure will discard > already processed data. > > The same problem with stack overflow happens, when i use reduce: > > (reduce (fn [counter elem] > (if (and (= (:type elem) :start-element) (= (:name elem) :row)) > (+ 1 counter) > counter)) > 0 (clojure.contrib.lazy-xml/parse-seq stackoverflow/posts-file)) > > So, question is open - how to process big xml files in constant space? (if > I won't collect much data during processing) > > -- > With best wishes, Alex Ott, MBA > http://alexott.blogspot.com/ http://xtalk.msk.su/~ott/ > http://alexott-ru.blogspot.com/ > > -- > 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
ClassCastException from RT.java in Day Communique
The cast in the following method from RT.java throws a ClassCastException when trying to compile Clojure within the Day Communique 4.2.1 content management system. Any suggestions? thanks, Warren static public long lastModified(URL url, String libfile) throws Exception{ if(url.getProtocol().equals("jar")) { return ((JarURLConnection) url.openConnection()).getJarFile().getEntry (libfile).getTime(); } else { return url.openConnection().getLastModified(); } } -- 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: ClassCastException from RT.java in Day Communique
Here is what the exception says : Caused by: java.lang.RuntimeException: java.lang.ClassCastException: com.day.cq.net.jar.ContentBusJarURLConnection cannot be cast to java.net.JarURLConnection at clojure.lang.RT.(RT.java:291) On Jan 6, 3:11 pm, Warren Wood wrote: > The cast in the following method from RT.java throws a > ClassCastException when trying to compile Clojure within the Day > Communique 4.2.1 content management system. Any suggestions? > > thanks, > > Warren > > static public long lastModified(URL url, String libfile) throws > Exception{ > if(url.getProtocol().equals("jar")) { > return ((JarURLConnection) url.openConnection()).getJarFile().getEntry > (libfile).getTime();} > > else { > return url.openConnection().getLastModified(); > > } > } > > -- 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: Understanding the continuation monad's bind operator
Konrad Hinsen writes: > Exactly. The result of m-bind must be a continuation-accepting > function again. Yes, and invoking 'mv' yields such a function. > That's the role of the outer layer (fn [c] ...). That one adds /another/ layer, but the inner function returned by 'mv' has the same "signature", right? > It is indeed a value of the right type, but it is not right value that > represents the composite computation. Ah, now we're getting somewhere. > This version of m-bind would not return the composite computation, but > rather execute it immediately. This is best seen by the position of > mv. In your m-bind, mv is called when m-bind is called. That's not the > desired behaviour. I'm interested in what you mean by "composite computation", because I think it's hinting at some concept for monads that I missed. If, as you say, executing the function immediately is not acceptable behavior, then I infer that the goal is to delay evaluation of the monadic function 'f' until someone finally passes in a "real" continuation as, say, by the `run-cont' function. Is that right? If so, is it the case with all or most monads that the bind operator is not meant to actually perform computation on the spot, but rather to compose a delayed computation, or is this delaying particular to the continuation monad? -- Steven E. Harris -- 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: Understanding the continuation monad's bind operator
jim writes: > Don't know if you saw, but I did a whole tutorial on the continuation > monad. Your essay is how I got started with monads in Clojure. I've read it six times now (along with five other of your essays on the subject), but perhaps I missed the requirement pertaining to delaying evaluation of the monadic function provided to bind. -- Steven E. Harris -- 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: Understanding the continuation monad's bind operator
I have a few more questions concerning how one interacts with a continuation monad. It's clear that a monadic function accepts some "base value" and returns a monadic value, in turn being a function accepting a single continuation argument. That means that a monadic function has a signature like a -> m b Say that we're looking to use some "normal" functions with this monad. Those functions may have signatures like a -> b They clearly don't return the right kind of value. There must be some way to integrate such functions without writing new wrappers around them by hand. Is this a job for `m-fmap'? Reading the implementation, it looks like it would take a "normal" function and allow it to call on the basic value extracted from a monadic value. The lift operator also sounded relevant, but, if I understand it correctly, it converts a "normal" function to one that accepts a monadic value and returns a monadic value. That's the wrong argument type to be used with bind -- which wants to call on a monadic function with a basic value -- so I don't understand when one would want to use lift. When would one be able to call on a "lifted" function? A simple example would help. -- Steven E. Harris -- 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: 6pm Sat, Dec 9th: Wraith Scheme, Paralell & Distributed Clojure at the Hacker Dojo
Two very cool presentations this Saturday at the Hacker Dojo in Mountain View: 1. An introduction to Wraith Scheme by Jay Reynolds Freeman 2. An introduction to parallel and distributed programming with Clojure by Amit Rathore Go here for more info: http://www.meetup.com/balisp/calendar/12248048/ Hope to see you there! Nick -- 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: Having difficulties with compilation in slime, emacs and clojure-project
Thanks for the help. I had initially installed slime, clojure-mode and swank following the instructions at http://riddell.us/tutorial/slime_swank/slime_swank.html I tried simply installing swank-clojure, but that seemed to conflict with what I already had. So I removed everything -- slime, clojure- mode, etc. and installed swank-clojure using ELPA. This in turn installed slime, slime-repl, swank-clojure, and clojure- mode. But now when I try M-x slime, I get: Searching for program: no such file or directory, lisp Clearly, my emacs-fu is not strong enough. Any ideas? On Jan 6, 9:32 am, Phil Hagelberg wrote: > Rob Lachlan writes: > > I have src and test in the directory I'm passing in. The problem > > however, seems to be on the emacs end. In the mini-buffer when I > > enter in Project root: and press return, the cursor > > just moves to the next line in the mini- buffer. So I think that the > > clojure-project function is getting stuck right at that spot. > > That's a bug that was fixed many months ago; sounds like you need to > update your version of swank-clojure: > > http://github.com/technomancy/swank-clojure > > Installation is handled through Emacs' package manager: > > http://tromey.com/elpa/install.html > > -Phil -- 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: 6pm Sat, Dec 9th: Wraith Scheme, Paralell & Distributed Clojure at the Hacker Dojo
It's Jan 9 I guess On Wed, Jan 6, 2010 at 10:53 PM, nallen05 wrote: > Two very cool presentations this Saturday at the Hacker Dojo in > Mountain View: > > 1. An introduction to Wraith Scheme by Jay Reynolds Freeman > 2. An introduction to parallel and distributed programming with > Clojure by Amit Rathore > > Go here for more info: http://www.meetup.com/balisp/calendar/12248048/ > > Hope to see you there! > > Nick > > -- > 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