Re: Trying to rewrite a loop as map/reduce

2009-12-16 Thread Laurent PETIT
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

2009-12-16 Thread tristan
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

2009-12-16 Thread George Jahad
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

2009-12-16 Thread George Jahad
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

2009-12-16 Thread Roman Roelofsen
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

2009-12-16 Thread Timothy Pratley
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)?

2009-12-16 Thread Dragan Djuric
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

2009-12-16 Thread Dave
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

2009-12-16 Thread Mike Hogye
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)?

2009-12-16 Thread Sean Devlin
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!

2009-12-16 Thread ashishwave
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

2009-12-16 Thread Meikel Brandmeyer
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

2009-12-16 Thread Meikel Brandmeyer
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)?

2009-12-16 Thread Meikel Brandmeyer
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

2009-12-16 Thread DTH
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)?

2009-12-16 Thread Stuart Sierra
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)?

2009-12-16 Thread Sean Devlin
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

2009-12-16 Thread Laurent PETIT
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

2009-12-16 Thread Bradbev
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?

2009-12-16 Thread rb
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?

2009-12-16 Thread Wilson MacGyver
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

2009-12-16 Thread David Nolen
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

2009-12-16 Thread tsuraan
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

2009-12-16 Thread Krukow

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?

2009-12-16 Thread Matt
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

2009-12-16 Thread samppi
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

2009-12-16 Thread tsuraan
 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

2009-12-16 Thread CuppoJava
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

2009-12-16 Thread CuppoJava
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)?

2009-12-16 Thread Richard Newman
 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

2009-12-16 Thread Nicolas Buduroi
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)?

2009-12-16 Thread Dragan Djuric
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

2009-12-16 Thread Nicolas Buduroi
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

2009-12-16 Thread ataggart


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

2009-12-16 Thread Graham Fawcett
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

2009-12-16 Thread Meikel Brandmeyer
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

2009-12-16 Thread Kasim
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)?

2009-12-16 Thread ajay gopalakrishnan
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)?

2009-12-16 Thread ajay gopalakrishnan
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

2009-12-16 Thread Joe
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

2009-12-16 Thread Zach Tellman
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

2009-12-16 Thread Alan Busby
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?

2009-12-16 Thread Seth
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?

2009-12-16 Thread Andrew Wagner
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

2009-12-16 Thread Luc Préfontaine

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?

2009-12-16 Thread Fogus
 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?

2009-12-16 Thread liebke
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

2009-12-16 Thread Dmitry Kakurin
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