Re: Trying to rewrite a loop as map/reduce
Hello, 2009/12/15 DTH dth...@gmail.com On Dec 15, 9:05 pm, Laurent PETIT laurent.pe...@gmail.com wrote: The final step is to apply return-fn to the result: (return-fn (first (remove (comp not predicate-fn) (iterate recur-fn a0))) Damn, well played sir; that's much cleaner. If I might offer one small tweak: (return-fn (some predicate-fn (iterate recur-fn a0))) would seem equivalent, though I doubt I'd have got there without your stepwise guide to change the way I was thinking about it. No, some does not work here. Dean gave the final word, I think, by reminding us of filter. some does not work because it will return the result of applying predicate-fn to the item, but we want the item intact in order to apply return-fn to it. But as said Meikel, and as I was implicitly implying in my final words by just saying is it something like that you expected, the loop version is not so bad with performance considerations in mind. Cheers, -- Laurent Cheers, -DTH -- 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.comclojure%2bunsubscr...@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: macro headaches
Thank you all for your replies doseq rather than my loop is the ideal situation for me, looks a lot nicer than my loop. I have to get used to avoiding loops when i can, and not calling object methods functions! thanks again everyone On 15 Dez., 22:18, Laurent PETIT laurent.pe...@gmail.com wrote: Hello, so you have a mutating object. To mutate it you must call a method (please note, I don't use the term function, which has a different meaning than a class method, especially in clojure where functions are first class). You want a final call something like that: (mystery-fn-or-macro object method-to-call list-of-items) If you can afford in your situation of passing a real higher order function to mystery-fn-or-macro , like (fn [obj item] (.method-to-call obj item)), then mystery-fn-or-macro is simply based on doseq : (defn mystery-fn [object fn-calling-method list-of-items] (doseq [item list-of-items] (fn-calling-method obj item))) and you call it as such : (mystery-fn object (fn [obj item] (.method-to-call obj item)) list-of-items) There's also the memfn macro in clojure.core for exactly this purpose: (mystery-fn object (memfn method-to-call item) list-of-items) But note that those days, memfn is somewhat deprecated in favor of raw (fn ...) or #(...) constructs. HTH, -- Laurent 2009/12/15 tristan tristan.k...@gmail.com Hi guys, I have a list (which i don't know the size of) and i want to do something like this: (doto (MutatingJavaObject.) (.add (first list-items)) (.add (second list-items)) . (.add (last list-items))) Now I may be doing this the complete wrong way, so if you have a better solution please tell me. but i've been trying to build a macro to expand this out, given the object, the function to call and the list of items. i've been playing with various things, and manage to get a few things that work if i pass the list of items in without being a list (i.e. (1 1 1) rather than '(1 1 1) or (list 1 1 1)) for example (defmacro d2 [obj func inputs] (concat (list 'doto obj) (map #(list func %) inputs))) but if i try and pass in my list-items variable it just complains that it Don't know how to create ISeq from: clojure.lang.Symbol. perhaps i'm not fully grasping the concept of macros? i'm very new to lisp and FP in general. while writing this email i had a light switch on that i could simply do it like this: (let [obj (MutatingJavaObject.)] (loop [in list-items] (when (not (empty? in)) (.add obj (first in)) (recur (rest in obj) but i would still like to know if there is a way i could get the macro i wanted going. please help! my googling and trauling through Stuart Halloway's book have come up naught. thanks in advance! -Tristan -- 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.comclojure%2bunsubscr...@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
Debugging Macros with the debug-repl
It can be tough debugging macros in Clojure. Here's a quick demo of using the debug-repl to do so: http://georgejahad.com/clojure/debug-repl-macros.html -- 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: Debugging Macros with the debug-repl
Forgot to mention that the debug-repl seems to work fine with slime, if you use the *inferior-lisp* buffer On Dec 16, 2:14 am, George Jahad cloj...@blackbirdsystems.net wrote: It can be tough debugging macros in Clojure. Here's a quick demo of using the debug-repl to do so:http://georgejahad.com/clojure/debug-repl-macros.html -- 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
Disabling ContextClassLoader
It seems that Clojure heavily uses the ContextClassLoader to load classes and compile clj files. Is there a way to disable this behaviour and tell the Clojure runtime to always use the ClassLoader where the .clj or .class file originally came from? I found some flags in the RT class but I am not sure how they can be used or if this is even possible. Thanks, Roman -- 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: Trying to rewrite a loop as map/reduce
On Dec 16, 6:00 am, samppi rbysam...@gmail.com wrote: I'm trying to rewrite a loop to use higher-level functions instead. ;; Here is my 'novelty' answer... just for fun! [not a serious answer] ;; (defn bounce [start pred iter] (trampoline (fn f [x] (if (pred x) x (fn [] (f (iter x) start)) (bounce 1 (partial = 5) inc) = 5 -- 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
How to efficiently compare related persistent collections (maps, sets)?
Hi, Here's the example of what I meant in the topic title: Let's say we have a set s1 that have 3 elements: #{obj1, obj2, obj3} I add a few elements to it and get s2 #{obj1, obj2, obj3, obj4, obj5} It is important to notice that, because s2 has been created by modifying s1, it reuses its structure, so these sets are related by the implementation with the persistent structures. Now, I can use difference function to get the difference (obj4, obj5), but it seems that this function needs to traverse all elements, which can be heavy if the collection stores thousands of elements. I have a hunch that, If the collections are somehow related by the fact that one collection is used in building the other one, that can be used as a hint in retrieving the difference. Is something like this possible in the current implementation and how to do it? I don't mind accessing persistent collections-related implementation-specific code. -- 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: Funding Clojure 2010
I'm not using Clojure in any real way yet, but just funded. Why? Because I respect the effort, wish I could do the same thing, and would want people to support me if they loved what I was doing and/or found it useful or joyous. 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
Pragmatic Studio course
I would really like to go to the Pragmatic Studio's 3-day Clojure course (https://pragmaticstudio.com/clojure). Taught by Stuart Halloway, and Rich himself, no less! ... But $1500 sounds like a lot. Can anybody help me convince myself that it's worth that 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: How to efficiently compare related persistent collections (maps, sets)?
Set equality requires the complete traversal of the set, and will always be O(n). However, there are shortcuts for determining if they are not equal. You could use the following test (if (first (remove set1 set2)) :not-equal (if (first (remove set2 set1)) :not-equal :equal)) remove is lazy, so this will return quickly if it is not equal. I would recommend making set1 smaller than set2 Hope this helps, Sean On Dec 16, 8:53 am, Dragan Djuric draga...@gmail.com wrote: Hi, Here's the example of what I meant in the topic title: Let's say we have a set s1 that have 3 elements: #{obj1, obj2, obj3} I add a few elements to it and get s2 #{obj1, obj2, obj3, obj4, obj5} It is important to notice that, because s2 has been created by modifying s1, it reuses its structure, so these sets are related by the implementation with the persistent structures. Now, I can use difference function to get the difference (obj4, obj5), but it seems that this function needs to traverse all elements, which can be heavy if the collection stores thousands of elements. I have a hunch that, If the collections are somehow related by the fact that one collection is used in building the other one, that can be used as a hint in retrieving the difference. Is something like this possible in the current implementation and how to do it? I don't mind accessing persistent collections-related implementation-specific code. -- 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: Funding update - the Clojure community is simply awesome!
all of us, the clojure community itself is very happy that the creator is satisfied with the response to continue the development. one request, can you just publish ROADMAP as to what new features do you plan to add in clojure in 2010. May be the clojure community can request to add/edit/prioritize some of your proposed ideas constructively bye :-) Ashish Ranjan ashishw...@yahoo.com On Dec 16, 8:54 am, Rich Hickey richhic...@gmail.com wrote: The response to the funding appeal has been very encouraging. I can't express how proud and privileged I am to be part of this community. What you are doing is tremendous and, I think, unprecedented. Many, many thanks to everyone who has participated so far: http://clojure.org/funders (note: not everyone has responded yet with permission to list their names) Best wishes to all during this holiday season, Rich -- 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: Trying to rewrite a loop as map/reduce
Hi, On Dec 15, 10:28 pm, DTH dth...@gmail.com wrote: Damn, well played sir; that's much cleaner. Someone, please enlighten me! Why is this clearer? (defn foo [a] (let [b f1 c (comp f2 b) d (comp f3 c) e (comp f4 d) g (comp f5 c) h (comp f5 f2 e)] (- (iterate #(f7 (d %) (b %)) a) (filter #(or (f6? (b %)) (= (g %) (h % first e))) It is more verbose than the loop. It generates 7 additional classes. Per iteration step it calls b 5 times and c 3 times. Depending on b and c maybe memoize should be considered, too. Why the first of the resulting sequence, not the second? (- The point here is: In which way is defining a seq of uninteresting values to obtain a single one cleaner than a loop which just returns that desired value? Maybe this is really a fixpoint iteration?) 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: Debugging Macros with the debug-repl
Hi, On Dec 16, 11:14 am, George Jahad cloj...@blackbirdsystems.net wrote: It can be tough debugging macros in Clojure. Here's a quick demo of using the debug-repl to do so:http://georgejahad.com/clojure/debug-repl-macros.html Very cool. 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: How to efficiently compare related persistent collections (maps, sets)?
Hi, On Dec 16, 3:45 pm, Sean Devlin francoisdev...@gmail.com wrote: Set equality requires the complete traversal of the set, and will always be O(n). I think, what Dragan was refering to is the shared structure in a set. Let's say you have to two sets A' and A'' which evolved from set A by adding elements. So the internal structure is partially shared. So when comparing A' with A'' and you hit in both sets the same shared structure you can short-circuit, knowing that they are equal and you have to only compare the rest. Whether this is possible, feasible, etc... Dunno. No clue here. 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: Trying to rewrite a loop as map/reduce
On Dec 16, 8:13 am, Laurent PETIT laurent.pe...@gmail.com wrote: 2009/12/15 DTH dth...@gmail.com (return-fn (some predicate-fn (iterate recur-fn a0))) would seem equivalent, though I doubt I'd have got there without your stepwise guide to change the way I was thinking about it. No, some does not work here. Dean gave the final word, I think, by reminding us of filter. some does not work because it will return the result of applying predicate-fn to the item, but we want the item intact in order to apply return-fn to it. Gah, of course; my toy implementation of f6? happened to return the argument when logical true, which made it appear to work; I completely forgot that `some` itself was not handling this. I read both Sean's response and your note on some while both my original messages were in moderation, and couldn't face sending another badger, got that one wrong... email on the heels of the first two... Cheers, -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: How to efficiently compare related persistent collections (maps, sets)?
In general, straight equality is efficient for Clojure data structures. For example, the equals() implementation for sets checks type, size, and hash code before examining the set elements. Determining that two sets are equal is still O(n), but determining that they are NOT equal is usually O(1). As for accessing the shared structure, that's definitely not trivial, and would require digging into the Java sources. -SS On Dec 16, 8:53 am, Dragan Djuric draga...@gmail.com wrote: Hi, Here's the example of what I meant in the topic title: Let's say we have a set s1 that have 3 elements: #{obj1, obj2, obj3} I add a few elements to it and get s2 #{obj1, obj2, obj3, obj4, obj5} It is important to notice that, because s2 has been created by modifying s1, it reuses its structure, so these sets are related by the implementation with the persistent structures. Now, I can use difference function to get the difference (obj4, obj5), but it seems that this function needs to traverse all elements, which can be heavy if the collection stores thousands of elements. I have a hunch that, If the collections are somehow related by the fact that one collection is used in building the other one, that can be used as a hint in retrieving the difference. Is something like this possible in the current implementation and how to do it? I don't mind accessing persistent collections-related implementation-specific code. -- 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: How to efficiently compare related persistent collections (maps, sets)?
Oh, I get it. Thanks Meikel. I imagine this is possible if you drill into the guts of PersistentHaspMap, but I would strongly discourage the behavior in user code. Perhaps as an upgrade to the object itself? There is a 1% chance that this could be a language upgrade, assuming it works across the board. I would tread cautiously. Sean On Dec 16, 9:58 am, Meikel Brandmeyer m...@kotka.de wrote: Hi, On Dec 16, 3:45 pm, Sean Devlin francoisdev...@gmail.com wrote: Set equality requires the complete traversal of the set, and will always be O(n). I think, what Dragan was refering to is the shared structure in a set. Let's say you have to two sets A' and A'' which evolved from set A by adding elements. So the internal structure is partially shared. So when comparing A' with A'' and you hit in both sets the same shared structure you can short-circuit, knowing that they are equal and you have to only compare the rest. Whether this is possible, feasible, etc... Dunno. No clue here. 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: Trying to rewrite a loop as map/reduce
Hey, the exercise was to rewrite it with higher order functions, not to make it clearer ! 2009/12/16 Meikel Brandmeyer m...@kotka.de Hi, On Dec 15, 10:28 pm, DTH dth...@gmail.com wrote: Damn, well played sir; that's much cleaner. Someone, please enlighten me! Why is this clearer? (defn foo [a] (let [b f1 c (comp f2 b) d (comp f3 c) e (comp f4 d) g (comp f5 c) h (comp f5 f2 e)] (- (iterate #(f7 (d %) (b %)) a) (filter #(or (f6? (b %)) (= (g %) (h % first e))) It is more verbose than the loop. It generates 7 additional classes. Per iteration step it calls b 5 times and c 3 times. Depending on b and c maybe memoize should be considered, too. Why the first of the resulting sequence, not the second? (- The point here is: In which way is defining a seq of uninteresting values to obtain a single one cleaner than a loop which just returns that desired value? Maybe this is really a fixpoint iteration?) 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.comclojure%2bunsubscr...@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: Funding Clojure 2010
Just donated. Thank you very much for Clojure, and I hope that this funding model works out for everybody! Cheers, Brad -- 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
ClojureQL docs?
Hi, After the recent discussion about ClojureQL, I wanted to try it, but I haven't found any documentation outside examples in blog posts. Did I miss something or is the code the current documentation? Raphaël -- 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: ClojureQL docs?
there are samples in http://www.gitorious.org/clojureql/ and also http://wiki.github.com/Lau-of-DK/clojureql you can also look at /src/dk/bestinclass/clojureql/demo.clj On Wed, Dec 16, 2009 at 11:40 AM, rb raphi...@gmail.com wrote: Hi, After the recent discussion about ClojureQL, I wanted to try it, but I haven't found any documentation outside examples in blog posts. Did I miss something or is the code the current documentation? Raphaël -- 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 -- Omnem crede diem tibi diluxisse supremum. -- 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: Roadmap for 2010
Well 1.1 is just around the corner. And 1.2 will probably bring all the deftype/defprotocol goodness. I imagine that Clojure-in-Clojure will be one of the big projects for 2010. You should check out http://www.assembla.com/spaces/clojure/ for more info. David On Tue, Dec 15, 2009 at 11:32 PM, ashishwave ashishw...@gmail.com wrote: Request for prioritizing the 2010 roadmap. New year is just few days ahead :-) What should be the new features which we would like to see in clojure May be some faatures from other dialects of LISP or some other jvm based language feature or something innovative idea. Let us list/share those ideas as a community ;-) bye :-) Ashish -- 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.comclojure%2bunsubscr...@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
QCon video download
Does anybody have a download link for the QCon talk that is linked from the clojure front page? I tend to use platforms where Flash support is even worse than normal, whereas mplayer tends to be very good at playing videos on every machine I use. -- 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: QCon video download
On Dec 16, 6:33 pm, tsuraan tsur...@gmail.com wrote: Does anybody have a download link for the QCon talk that is linked from the clojure front page? I tend to use platforms where Flash support is even worse than normal, whereas mplayer tends to be very good at playing videos on every machine I use. If you watch the http traffic, e.g. in firebug, you'll see it makes a request to: http://flv.thruhere.net/presentations/09-mar-persistentdatastructures.flv You'll have to find the slides on the qcon homepage if you want to follow. /Karl -- 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
Any interest in a Nova Clug?
I'm looking into setting up a Northern Virginia Clojure User Group and would like to know who is interested. I know there is a DC clojure study group, but it seems to not be as active recently. DC is also hard for me to get to during the week. We have a couple of other user groups which meet once a month right here in my office in Reston, VA. If there are enough people interested, I can coordinate with the other user group organizers to start a Clojure user group using the same meeting space. Questions? Comments? Hassletations? Aggravations? Contemplations? -- 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
How to modify the last few elements of a vector
I'm using a vector as a stack. I want to apply a function–let's call it modify-element, one argument—to the elements from k to (- (count a- vector) k). Right now, I have something like (not tested yet): (reduce #(update-in %1 [%2] modify-element) a-vector (range k (- (count a-vector) k))) Is there a better way? -- 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: QCon video download
If you watch the http traffic, e.g. in firebug, you'll see it makes a request to: http://flv.thruhere.net/presentations/09-mar-persistentdatastructures.flv You'll have to find the slides on the qcon homepage if you want to follow. Thanks! -- 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: How to modify the last few elements of a vector
The basic abstraction that I see, is that you need a function that will replace a range within a collection with another collection. Here's a quick and dirty way of doing that: (defn assoc-range [v min max v2] (vec (concat (take min v) v2 (nthnext v (dec max) So calling: (assoc-range [0 1 2 3 4] 2 4 [a b]) returns: [0 1 a b 3 4] So now you can write your original code as this: (assoc-range a-vector k (- (count a-vector) k) (map modify-element a-vector)) This should be quite a bit faster than your original code. And is a little cleaner in my opinion. Hope that helps -Patrick PS: And perhaps you can find a more elegant way of writing assoc- range. Mine is a little smelly. -- 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: How to modify the last few elements of a vector
Never mind, I realized that my solution doesn't quite answer your question. Here's another attempt. --Convenience Functions-- (defn indexed [coll] (map vector coll (iterate inc 0))) (defn between [n min max] (and ( n max) (= n min))) --Your Specific Case-- (for [[e i] (indexed v)] (if (between i k (- (count v) k)) (modify-element e) e)) -Patrick -- 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: How to efficiently compare related persistent collections (maps, sets)?
I imagine this is possible if you drill into the guts of PersistentHaspMap, but I would strongly discourage the behavior in user code. Perhaps as an upgrade to the object itself? There is a 1% chance that this could be a language upgrade, assuming it works across the board. I would tread cautiously. I could easily imagine an implementation of equality for two tree sets checking for intermediate node reference equality as a shortcut... but as you say, not in user code. Right now, APersistentSet.equals(Object o) only casts to Set, and does equality checking by iterating over the elements of the input set. I'd certainly benchmark this before doing the work, though -- I'd guess that most equal sets will hash-compare as equal, most non-equal sets will fail early on in a per-element comparison, and it's probably a minority of compared sets that will share structure. It's unlikely that adding an additional object identity comparison is worth the machine instructions. My hunch (from examining the performance of Clojure's sets in the past) is that it's not worth doing the work... -- 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
Semantic Versioning
Hi, on the CommonJS Google Group there was a discussion on semantic versioning, a formalization of the concept of properly using a common version number scheme (Major.Minor.Patch) for libraries. http://semver.org/ I think it would be especially easy to enforce a simple version of this system in a Clojure project. A program could inspect code and decide what version number to use during build time. The major version could be changed automatically once a public function, multi-method or macro arguments list change in a non-backward compatible way and also when some of them are removed. The patch version number could be incremented when code change (but not the API) and existing tests don't change or new tests have been added. The minor version could be incremented in other cases. This implementation have it's quirks, like not being able to check for return types. Doing it for real would certainly uncover a more lot subtle details. What do you thinking about this idea? How would you improve it? - budu -- 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: How to efficiently compare related persistent collections (maps, sets)?
Yes, the true/false for equality is not a problem. I am looking for a shortcut that finds different elements more efficiently. So, the sets are different, but I want to get hold of elements that are in s2 but not in s1. On Dec 16, 8:38 pm, Richard Newman holyg...@gmail.com wrote: I imagine this is possible if you drill into the guts of PersistentHaspMap, but I would strongly discourage the behavior in user code. Perhaps as an upgrade to the object itself? There is a 1% chance that this could be a language upgrade, assuming it works across the board. I would tread cautiously. I could easily imagine an implementation of equality for two tree sets checking for intermediate node reference equality as a shortcut... but as you say, not in user code. Right now, APersistentSet.equals(Object o) only casts to Set, and does equality checking by iterating over the elements of the input set. I'd certainly benchmark this before doing the work, though -- I'd guess that most equal sets will hash-compare as equal, most non-equal sets will fail early on in a per-element comparison, and it's probably a minority of compared sets that will share structure. It's unlikely that adding an additional object identity comparison is worth the machine instructions. My hunch (from examining the performance of Clojure's sets in the past) is that it's not worth doing the work... -- 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: Semantic Versioning
s/thinking/think/ On Dec 16, 2:56 pm, Nicolas Buduroi nbudu...@gmail.com wrote: Hi, on the CommonJS Google Group there was a discussion on semantic versioning, a formalization of the concept of properly using a common version number scheme (Major.Minor.Patch) for libraries. http://semver.org/ I think it would be especially easy to enforce a simple version of this system in a Clojure project. A program could inspect code and decide what version number to use during build time. The major version could be changed automatically once a public function, multi-method or macro arguments list change in a non-backward compatible way and also when some of them are removed. The patch version number could be incremented when code change (but not the API) and existing tests don't change or new tests have been added. The minor version could be incremented in other cases. This implementation have it's quirks, like not being able to check for return types. Doing it for real would certainly uncover a more lot subtle details. What do you thinking about this idea? How would you improve it? - budu -- 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: How to modify the last few elements of a vector
On Dec 16, 10:33 am, samppi rbysam...@gmail.com wrote: I'm using a vector as a stack. I want to apply a function–let's call it modify-element, one argument—to the elements from k to (- (count a- vector) k). Right now, I have something like (not tested yet): (reduce #(update-in %1 [%2] modify-element) a-vector (range k (- (count a-vector) k))) Is there a better way? It looks fine as is; you're just dealing with the vector instead of having to jump between seqs and entirely new vectors. The only part that looks weird to me is (range k (- (count a-vector) k)), since that will only give you numbers when k count/2. -- 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: How to modify the last few elements of a vector
On Wed, Dec 16, 2009 at 1:33 PM, samppi rbysam...@gmail.com wrote: I'm using a vector as a stack. I want to apply a function–let's call it modify-element, one argument—to the elements from k to (- (count a- vector) k). Right now, I have something like (not tested yet): (reduce #(update-in %1 [%2] modify-element) a-vector (range k (- (count a-vector) k))) Is there a better way? Not sure it's better, but I find this more readable: (defn stack-apply [n f stack] (if (zero? n) stack (conj (stack-apply (dec n) f (pop stack)) (f (last stack) user (let [stack [1 2 3 4 5] f #(* 100 %)] (stack-apply 3 f stack)) [1 2 300 400 500] Best, Graham -- 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: Trying to rewrite a loop as map/reduce
Hi, On Dec 16, 4:30 pm, Laurent PETIT laurent.pe...@gmail.com wrote: Hey, the exercise was to rewrite it with higher order functions, not to make it clearer ! Well. It was claimed it is cleaner... Just asking... 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: Clojure Console Progress Bar
Thank you. Here is my final progress bar code for anyone interested: (defn progress-string [i] (str-join (seq (for [x (range 50)] (if (= (/ i 2) x) =) (defn show-progress-string [t] (dotimes [percent 100 ] (do (Thread/sleep t) (print \r| (progress-string (inc percent)) | (inc percent) % done ) (flush (show-progress-string 1200) Just adding (flush) solved it. On Dec 15, 6:23 pm, Stephen C. Gilardi squee...@mac.com wrote: I have following script to show the progress status in Console. But I am having an issue where print only prints final string (after 100 times loop finished) not those in between thread sleeps but println prints out all in between. I am pretty new to Clojure ( Lisp for the matter) and have no idea why. Can someone point out what is the problem? (defn progress-string [i] (for [x (range 50)] (if (= (/ i 2) x) =))) (defn show-progress-string [t] (dotimes [percent 100 ] (do (Thread/sleep t) (println \r (str-join (seq (progress-string (inc percent The output is kept in an output buffer until it's flushed (either because the buffer is full or by request). println includes a call to (flush) (if *flush-on-newline* is true, which is the default). In your case, you can use an explicit call to (flush) when you want to be sure the user has seen what's been printed so far. --Steve smime.p7s 3KViewDownload -- 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: How to efficiently compare related persistent collections (maps, sets)?
Your argument is right and it is a good idea to take advantage of the shared structure to calculate differences. However, it is important to remember that is is just a special case and I don't expect that whenever you want to calculate a difference between two sets, you always compare between the older and newer versions only. In general, I would guess that one would need to compare 2 sets that were never shared in the first place and were created separately. In that case, there is not sharing and this idea wont be applicable. So, if the language must support set-difference then it needs to have two types of implementations anyway, which seems to indicate that it is better not to add such a feature to the language. Perhaps somebody can write another library for set operations (because it is very frequent these days) that implements this paper (although, I believe this will be easier to implement it at the Java level not Clojure level) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.9963 Ajay On Wed, Dec 16, 2009 at 8:53 AM, Dragan Djuric draga...@gmail.com wrote: Hi, Here's the example of what I meant in the topic title: Let's say we have a set s1 that have 3 elements: #{obj1, obj2, obj3} I add a few elements to it and get s2 #{obj1, obj2, obj3, obj4, obj5} It is important to notice that, because s2 has been created by modifying s1, it reuses its structure, so these sets are related by the implementation with the persistent structures. Now, I can use difference function to get the difference (obj4, obj5), but it seems that this function needs to traverse all elements, which can be heavy if the collection stores thousands of elements. I have a hunch that, If the collections are somehow related by the fact that one collection is used in building the other one, that can be used as a hint in retrieving the difference. Is something like this possible in the current implementation and how to do it? I don't mind accessing persistent collections-related implementation-specific code. -- 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.comclojure%2bunsubscr...@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: How to efficiently compare related persistent collections (maps, sets)?
If the sets data structure is also not shared, then the paper I mentioned (link provided earlier) is one of the fastest to date. And it is very small easy to implement. On Wed, Dec 16, 2009 at 2:59 PM, Dragan Djuric draga...@gmail.com wrote: Yes, the true/false for equality is not a problem. I am looking for a shortcut that finds different elements more efficiently. So, the sets are different, but I want to get hold of elements that are in s2 but not in s1. On Dec 16, 8:38 pm, Richard Newman holyg...@gmail.com wrote: I imagine this is possible if you drill into the guts of PersistentHaspMap, but I would strongly discourage the behavior in user code. Perhaps as an upgrade to the object itself? There is a 1% chance that this could be a language upgrade, assuming it works across the board. I would tread cautiously. I could easily imagine an implementation of equality for two tree sets checking for intermediate node reference equality as a shortcut... but as you say, not in user code. Right now, APersistentSet.equals(Object o) only casts to Set, and does equality checking by iterating over the elements of the input set. I'd certainly benchmark this before doing the work, though -- I'd guess that most equal sets will hash-compare as equal, most non-equal sets will fail early on in a per-element comparison, and it's probably a minority of compared sets that will share structure. It's unlikely that adding an additional object identity comparison is worth the machine instructions. My hunch (from examining the performance of Clojure's sets in the past) is that it's not worth doing the work... -- 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.comclojure%2bunsubscr...@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
How to fund open source Clojure development
a. Offer new clojure features in binary form to developers who pay $100 a year 3 months before everyone else. b. Run a clojure programmer temp and/or high level consulting agency. c. Charge for cert testing and training. d. Sell for access to online library api calls. e. Find a business for whom Clojure is a critical piece of technology. f. Get employed by a standards body or consortium trying to develop parallel programming. g. Keep Clojure open source but make native tool chain compilers for various platforms available only online-ie android. h. Sell support contracts or create a business that does that and than employs you, similar to RedHat. i. Sell Clojure training classes to teachers and schools, advocating that Clojure is ideal for the classroom since it combines the widespread industry tool Java and the comp sci friendly and desireable Lisp. -- 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: How to fund open source Clojure development
All of these seem to distract from the activity we're trying to fund: the development of Clojure. If the current approach can bring in enough money, it strikes me as fairly ideal. We'll just have to wait and see if it does. -- 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: Funding Clojure 2010
I'd just like to second the request for selling a CD with Clojure 1.0 on it. No support, no additional features; just a CD with the Clojure jar file or something. I'd even go a step further and have multiple versions that would be identical except for the disc label, Gold, $1000 Silver, $500 Bronze, $100 Rich could order a big box of CDs with 1.0 on them, and then it would be easy for people to purchase them for the office and expense them like any other software. Many companies wouldn't bat an eyelash at paying $$$ for great software that improves productivity, but getting a large organization to donate to something can be *very* difficult. Just my $0.02, Alan -- 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: Any interest in a Nova Clug?
Matt, (conj nova-clug :me) Seth On Dec 16, 1:14 pm, Matt macourt...@gmail.com wrote: I'm looking into setting up a Northern Virginia Clojure User Group and would like to know who is interested. I know there is a DC clojure study group, but it seems to not be as active recently. DC is also hard for me to get to during the week. We have a couple of other user groups which meet once a month right here in my office in Reston, VA. If there are enough people interested, I can coordinate with the other user group organizers to start a Clojure user group using the same meeting space. Questions? Comments? Hassletations? Aggravations? Contemplations? -- 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: Any interest in a Nova Clug?
There's a possibility I might be interested in joining such a group. It would mostly depend on scheduling. On Wed, Dec 16, 2009 at 8:35 PM, Seth seth.schroe...@gmail.com wrote: Matt, (conj nova-clug :me) Seth On Dec 16, 1:14 pm, Matt macourt...@gmail.com wrote: I'm looking into setting up a Northern Virginia Clojure User Group and would like to know who is interested. I know there is a DC clojure study group, but it seems to not be as active recently. DC is also hard for me to get to during the week. We have a couple of other user groups which meet once a month right here in my office in Reston, VA. If there are enough people interested, I can coordinate with the other user group organizers to start a Clojure user group using the same meeting space. Questions? Comments? Hassletations? Aggravations? Contemplations? -- 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.comclojure%2bunsubscr...@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: Clojure analysis
I agree with Sean, the STM is a big feature also are parallelism and data immutability. These features are working now and they make things a lot simpler. I agree also that the lack of documentation is a barrier but even with documentation the learning curve would not be much shorter again because the language departs from concepts carried on in most programming languages, not because of it's syntax. Stuart has written a smart book and that as a starting point is more than enough. Hands-on is required to learn a new language and not just for academic purposes. Having a real problem to solve is better. You say that Clojure is a better Java... totally wrong. Java sits where it needs to be, at the bottom of the stack like assemblers in the 70s/80s. Getting interop with Java is as obvious as being able to call an assembly routine from a higher level language or an external library. No one would question this ability in other languages. No one wants to rewrite mundane tasks if they are already programmed. If this makes you think that Clojure is a better Java well that relates to my comments later in this post. Your statement that Clojure should stand apart from others is deeply wrong. It is already a breed of its own. Borrowing best ideas from other languages does not mean that the end result is a Babel tower. If you think that Clojure is not well articulated and does not have it's own personality that also relates to my comments following this paragraph. You warn that you learn languages just for the fun of it. I would be curious to know how much time you spent learning Clojure... I personally worked with Fortran, Cobol, PL/1, Lisp, C/C++, VB, Java, JS and so many other languages to deliver working systems in production not counting half a dozen assemblers (with systems above 20,000 code lines). Many of these were multi threaded apps before libthread even existed. Dynamic languages were far more common 20 years ago than now btwy. We have been working with Clojure for more than a 16 months with a message bus software in production for 11 months. Not a simple HelloWorld app Just to get up to write decent production code with Clojure it took me a good 4 months. I'm a 25 years exp. guy and I have been writing code and designing systems for that life span. I am not an educated manager with grey hairs. My colleagues are younger and did not do better. The changes that Clojure brings in the old ways we used to program are significantly important to make learning a steep curve before you can write code that you can read again without shame. So either you are a genius and went through Clojure faster than we could, learning all the features it offers, or you just skimmed the surface. I think the later applies and that you have some toupet to compare a language with others without any extensive field use of most of them. Get a few millions lines of code behind you, then you may eventually write decent critics. Meanwhile be humble... Luc On Fri, 2009-12-11 at 13:04 -0800, kusi wrote: http://kusimari.blogspot.com/2009/12/analysing-clojure-programming-language.html -- 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: Any interest in a Nova Clug?
I'm looking into setting up a Northern Virginia Clojure User Group and would like to know who is interested. Sounds like fun. Count me in. -m -- 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: Any interest in a Nova Clug?
I'd try to make it, even though Reston is on the wrong side of the river :-) It would be cool to try to also schedule something in March when Rich and Stu will be in Reston for the Prag Studio training. David On Dec 16, 1:14 pm, Matt macourt...@gmail.com wrote: I'm looking into setting up a Northern Virginia Clojure User Group and would like to know who is interested. I know there is a DC clojure study group, but it seems to not be as active recently. DC is also hard for me to get to during the week. We have a couple of other user groups which meet once a month right here in my office in Reston, VA. If there are enough people interested, I can coordinate with the other user group organizers to start a Clojure user group using the same meeting space. Questions? Comments? Hassletations? Aggravations? Contemplations? -- 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 analysis
Judging by the article you've spent very little time learning Clojure and have managed to get every key point wrong: Clojure is a multi-paradigm language no it's not, and it's most certainty not an OOP language: http://clojure.org/rationale Functional programming finds its best implementation in the homoiconic language family. very debatable statement The attitude of the language [...] is to be a better Java Clojure's attitude is to be a great language for JVM platform (and maybe CLR) _other_ than Java. With different set of goals. Granted it's often _compared_ with Java for obvious reasons. one will not appreciate Clojure for being a better LISP. Instead Clojure tries to be a better Java with LISP syntax. Not sure who the 'one' is. I for one do appreciate Clojure as a better Lisp :-). Owing to the above attitude, many of the language constructs exist so that one can do what Java cannot do Is Java some kind of golden standard in language design now? For e.g. tail calls cannot be optimized in the Java Correction: in current version of JVM As for tail calls, Clojure has to live with limitations of the target platform. In Clojure this identity is lost, because practical implementation difficulties are put ahead of clean design. IMHO Clojure has a rather strong and unique identity. Here is my elevator pitch for Clojure (not any kind of analysis, just what makes Clojure attractive to ME): - Lisp dialect designed for JVM with transparent interop - Better Lisp than Lisp :-) Simpler/cleaner than Common Lisp, more practical than Scheme. - Rich immutable collections unified by a concept of sequence - Unique and intriguing approach to state, identity and concurrency - Very dedicated and talented author, great community In general I'd like to second Luc's be humble comment. And do your home work before doing analysis. - Dmitry On Dec 11, 1:04 pm, kusi kusim...@gmail.com wrote: http://kusimari.blogspot.com/2009/12/analysing-clojure-programming-la... -- 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