Re: Elegant way to do lazy infinite list with custom step

2016-12-14 Thread Ghadi Shayban
If you really want to have _exactly_ what Haskell does (derives the range 
from an example) -- yes, you could do a macro.  Clojure's new spec facility 
(in 1.9-alphas) makes the macro arguments checked at load time too, which 
is extra nice:

(set! *print-length* 5) ;; avoid printing infinite lists

(defmacro haskell-like-range [lower next dots]
  `(range ~lower Long/MAX_VALUE ~(- next lower)))

(require '[clojure.spec :as s])
(s/fdef haskell-like-range :args (s/cat :lower int? :next int? :dots 
'#{...}))

;; these will fail at load time with a really nice error message
(haskell-like-range :foo 42 ...)
(haskell-like-range 4 6 ..) ;; needs three dots according to the spec

;; this will succeed
(haskell-like-range 2 6 ...)


On Wednesday, December 14, 2016 at 1:02:38 AM UTC-5, tbc++ wrote:
>
> Ah! I knew there was a way to do it via iterate, but it was 9:30pm at the 
> time and I was tired. Nice example though.
>
> On Tue, Dec 13, 2016 at 10:03 PM, Ghadi Shayban  > wrote:
>
>> A common way to do it in Clojure is `iterate`, no macros necessary. As of 
>> Clojure 1.7 this doesn't allocate a list at all if you reduce/fold over it:
>> (iterate #(+ % 2) 4)
>>
>>
>> On Tuesday, December 13, 2016 at 11:27:28 PM UTC-5, tbc++ wrote:
>>>
>>> I'm not aware of such a construct, but it's trivial enough to write 
>>> something like this using `range` or perhaps write a function that will 
>>> yield a lazy seq:
>>>
>>> (defn inf-list
>>>   ([x y]
>>> (cons x (cons y (inf-list x y 2
>>>   ([x y c]
>>> (cons (+ x (* c (- y x)))
>>>   (lazy-seq (inf-list x y (inc c))
>>>
>>> No macros required
>>>
>>> On Tue, Dec 13, 2016 at 9:14 PM, bill nom nom  
>>> wrote:
>>>
 In Haskell, I can get an infinite lazy list that is incremented by two 
 by, starting at 4
 [4,6..]

 which yields the result
 [4,6,8,10...]

 the more general form
 [x,y..] produces [x, x + (y-x), x + 2 * (y-x), x + 3 * (y-x)...]

 Is there a way to make a macro of this in clojure, or is there 
 something already as elegant? 

 -- 
 You received this message because you are subscribed to the Google
 Groups "Clojure" group.
 To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, send 
 an email to clojure+u...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.

>>>
>>>
>>>
>>> -- 
>>> “One of the main causes of the fall of the Roman Empire was that–lacking 
>>> zero–they had no way to indicate successful termination of their C 
>>> programs.”
>>> (Robert Firth) 
>>>
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> “One of the main causes of the fall of the Roman Empire was that–lacking 
> zero–they had no way to indicate successful termination of their C 
> programs.”
> (Robert Firth) 
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: apply arguments

2016-12-14 Thread Rafo Ufoun
Ok now I understand ! 

So this implementation of apply act like this, and all implementations 
need, as the last arg of all the list, a sequence. 

Thank you

Le mercredi 14 décembre 2016 13:59:40 UTC-5, James Reeves a écrit :
>
> On 14 December 2016 at 17:38, Rafo Ufoun  > wrote:
>
>> Hi, thank you for your response ! 
>>
>> I know the '& args' notation, but I thought that this notation expected a 
>> collection *after *the &, so in the apply signature, we expect a fn, 4 
>> args and then, a sequence.
>>
>> In this call : (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3]), the & should be 
>> here : (apply + 1 1 1 1 *&* 1 1 1 1 1 1 1 [2 3])
>>
>> If I understand what you're saying, all the parameters after the & and 
>> the [2 3] sequence is converted into a single sequence, thanks to the & ?
>>
>
> Yes, though the [2 3] vector will be inside the args sequence. So if you 
> had:
>
> (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3])
>
> And the arguments of apply are:
>
> [f a b c d & args]
>
> Then:
>
> f = +
> a = 1
> b = 1
> c = 1
> d = 1
> args = (1 1 1 1 1 1 1 [2 3])
>
> Internally, the function combines the last value of args with the rest.
>
> - James
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: apply arguments

2016-12-14 Thread James Reeves
On 14 December 2016 at 17:38, Rafo Ufoun  wrote:

> Hi, thank you for your response !
>
> I know the '& args' notation, but I thought that this notation expected a
> collection *after *the &, so in the apply signature, we expect a fn, 4
> args and then, a sequence.
>
> In this call : (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3]), the & should be here
> : (apply + 1 1 1 1 *&* 1 1 1 1 1 1 1 [2 3])
>
> If I understand what you're saying, all the parameters after the & and the
> [2 3] sequence is converted into a single sequence, thanks to the & ?
>

Yes, though the [2 3] vector will be inside the args sequence. So if you
had:

(apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3])

And the arguments of apply are:

[f a b c d & args]

Then:

f = +
a = 1
b = 1
c = 1
d = 1
args = (1 1 1 1 1 1 1 [2 3])

Internally, the function combines the last value of args with the rest.

- James

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: apply arguments

2016-12-14 Thread Rafo Ufoun
Hi, thank you for your response ! 

I know the '& args' notation, but I thought that this notation expected a 
collection *after *the &, so in the apply signature, we expect a fn, 4 args 
and then, a sequence.

In this call : (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3]), the & should be here 
: (apply + 1 1 1 1 *&* 1 1 1 1 1 1 1 [2 3])

If I understand what you're saying, all the parameters after the & and the 
[2 3] sequence is converted into a single sequence, thanks to the & ?


Le mercredi 14 décembre 2016 10:25:39 UTC-5, James Reeves a écrit :
>
> Clojure functions can take a collection of arguments by using the "&" 
> symbol. So for instance:
>
> (defn print-all [& args]
>   (doseq [arg args]
> (println arg)))
>
> If we run this function with:
>
> (print-all "Hello" "World")
>
> Then it will print:
>
> Hello
> World
>
> But dealing with sequences has a cost to it. If print-all has only one 
> argument, then we can avoid the doseq. So we can optimise the function to 
> be more performant when we pass in only one argument:
>
> (defn print-all
>   ([x]
> (println x))
>   ([x & args]
> (println x)
> (doseq [arg args]
>   (println arg
>
> Notice that if we pass it one argument, we just print it directly. Two or 
> more arguments goes into the doseq loop.
>
> Of course we could also add an optimisation for two arguments as well:
>
> (defn print-all
>   ([x]
> (println x))
>   ([x y]
> (println x)
> (println y))
>   ([x y & args]
> (println x)
> (println y)
> (doseq [arg args]
>   (println arg
>
> Hopefully you can see why "apply" has five arities now. The first four are 
> just optimisations, so "apply" will be slightly faster if it has five or 
> fewer arguments.
>
> In most cases you don't need to use this technique because the performance 
> gain will be minimal. My print-all function above is probably going to 
> spend most of its time on I/O, making the optimisation all but useless in 
> my example. But clojure.core is used everywhere, so wringing an extra drop 
> of performance is often worth it.
>
> - James
>
> On 14 December 2016 at 13:14, Rafo Ufoun  > wrote:
>
>> Hi everyone,
>>
>> I'm new to clojure and I try to understand the apply function. 
>>
>> From the clojure sources, I can see that there are several signatures for 
>> this method: with or without additional arguments before the sequence.
>>
>> According to these signatures, we can have 4 arguments MAX before getting 
>> the sequence of arguments (([^clojure.lang.IFn f a b c d & args])
>>
>> However, (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3]) is a valid function call 
>> and I can get a result. 
>> At this point I'm not sure how this signature can accept so many argument 
>> before the [2 3] sequence. I think I miss a point but don't know what !
>>
>> Thanks you, Rafi.
>>
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: apply arguments

2016-12-14 Thread James Reeves
Clojure functions can take a collection of arguments by using the "&"
symbol. So for instance:

(defn print-all [& args]
  (doseq [arg args]
(println arg)))

If we run this function with:

(print-all "Hello" "World")

Then it will print:

Hello
World

But dealing with sequences has a cost to it. If print-all has only one
argument, then we can avoid the doseq. So we can optimise the function to
be more performant when we pass in only one argument:

(defn print-all
  ([x]
(println x))
  ([x & args]
(println x)
(doseq [arg args]
  (println arg

Notice that if we pass it one argument, we just print it directly. Two or
more arguments goes into the doseq loop.

Of course we could also add an optimisation for two arguments as well:

(defn print-all
  ([x]
(println x))
  ([x y]
(println x)
(println y))
  ([x y & args]
(println x)
(println y)
(doseq [arg args]
  (println arg

Hopefully you can see why "apply" has five arities now. The first four are
just optimisations, so "apply" will be slightly faster if it has five or
fewer arguments.

In most cases you don't need to use this technique because the performance
gain will be minimal. My print-all function above is probably going to
spend most of its time on I/O, making the optimisation all but useless in
my example. But clojure.core is used everywhere, so wringing an extra drop
of performance is often worth it.

- James

On 14 December 2016 at 13:14, Rafo Ufoun  wrote:

> Hi everyone,
>
> I'm new to clojure and I try to understand the apply function.
>
> From the clojure sources, I can see that there are several signatures for
> this method: with or without additional arguments before the sequence.
>
> According to these signatures, we can have 4 arguments MAX before getting
> the sequence of arguments (([^clojure.lang.IFn f a b c d & args])
>
> However, (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3]) is a valid function call
> and I can get a result.
> At this point I'm not sure how this signature can accept so many argument
> before the [2 3] sequence. I think I miss a point but don't know what !
>
> Thanks you, Rafi.
>
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


apply arguments

2016-12-14 Thread Rafo Ufoun
Hi everyone,

I'm new to clojure and I try to understand the apply function. 

>From the clojure sources, I can see that there are several signatures for 
this method: with or without additional arguments before the sequence.

According to these signatures, we can have 4 arguments MAX before getting 
the sequence of arguments (([^clojure.lang.IFn f a b c d & args])

However, (apply + 1 1 1 1 1 1 1 1 1 1 1 [2 3]) is a valid function call and 
I can get a result. 
At this point I'm not sure how this signature can accept so many argument 
before the [2 3] sequence. I think I miss a point but don't know what !

Thanks you, Rafi.

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: spurious clojurescript require exception: Namespace does not exist

2016-12-14 Thread David Nolen
`require` only works if your namespace is in a file that respects Java
classpath conventions. You may have missed this detail in the way all the
Quick Start examples are structured.

HTH,
David

On Sat, Jan 30, 2016 at 12:17 PM, Gregg Reynolds  wrote:

> I'm following the "browser REPL" section in the Clojurescript Quickstart
> .  Everything
> seems hunky-dory; I can connect from the browser and eval code at the
> repl.  But when I change my source and try to require my namespace, I get:
>
> cljs.user=> (require '[test.my-greeting :as t])
> Reading analysis cache for tmp/test/my_greeting.cljs
> java.lang.IllegalArgumentException: Namespace test.my-greeting does not
> exist
>
> Here's the code:
>
> In /browser_repl.cljs:
>
> (require 'cljs.repl)
> (require 'cljs.build.api)
> (require 'cljs.repl.browser)
>
> (cljs.build.api/build "tmp"
>   {:main 'test.my-greeting
>:output-to "dev-resources/public/scripts/main.js"
>:output-dir "dev-resources/public/scripts/cljs"
>:verbose true})
>
> (cljs.repl/repl (cljs.repl.browser/repl-env)
>   :watch "tmp"
>:output-to "dev-resources/public/scripts/main.js"
>   :output-dir "dev-resources/public/scripts/cljs"
>   :verbose true)
>
>
> In /tmp/test/my_greeting.cljs:
>
> (ns test.my-greeting
>(:require [clojure.browser.repl :as repl]))
> (defonce conn
>   (repl/connect "http://localhost:9000/repl;))
> (enable-console-print!)
> (println "HELLO")
>
> I'm stumped.  Help!
>
> Gregg
>
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: spurious clojurescript require exception: Namespace does not exist

2016-12-14 Thread dbraun86
Try running this instead:

(cljs.core/require '[test.my-greeting :as t])



On Saturday, January 30, 2016 at 7:17:49 PM UTC+2, Gregg Reynolds wrote:
>
> I'm following the "browser REPL" section in the Clojurescript Quickstart 
> .  Everything 
> seems hunky-dory; I can connect from the browser and eval code at the 
> repl.  But when I change my source and try to require my namespace, I get:
>
> cljs.user=> (require '[test.my-greeting :as t])
> Reading analysis cache for tmp/test/my_greeting.cljs
> java.lang.IllegalArgumentException: Namespace test.my-greeting does not 
> exist
>
> Here's the code:
>
> In /browser_repl.cljs:
>
> (require 'cljs.repl)
> (require 'cljs.build.api)
> (require 'cljs.repl.browser)
>
> (cljs.build.api/build "tmp"
>   {:main 'test.my-greeting
>:output-to "dev-resources/public/scripts/main.js"
>:output-dir "dev-resources/public/scripts/cljs"
>:verbose true})
>
> (cljs.repl/repl (cljs.repl.browser/repl-env)
>   :watch "tmp"
>:output-to "dev-resources/public/scripts/main.js"
>   :output-dir "dev-resources/public/scripts/cljs"
>   :verbose true)
>
>
> In /tmp/test/my_greeting.cljs:
>
> (ns test.my-greeting
>(:require [clojure.browser.repl :as repl]))
> (defonce conn
>   (repl/connect "http://localhost:9000/repl;))
> (enable-console-print!)
> (println "HELLO")
>
> I'm stumped.  Help!
>
> Gregg
>
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Are there file watchers that can tell me when a file is done uploading?

2016-12-14 Thread Michael Wood
Yes, exactly. Move and rename are the same thing :)

On 14 Dec 2016 08:41, "Torsten Uhlmann"  wrote:

... or renames it. That's what browsers do for instance when downloading
stuff.

Michael Wood  schrieb am Mi., 14. Dez. 2016 um
02:25 Uhr:

> Another option: Whatever accepts the upload (e.g. a cgi script) moves the
> file to where the clojure code expects to find it only when it is fully
> uploaded. the move should be an atomic operation.
>
> On 11 Dec 2016 21:47, "larry google groups" 
> wrote:
>
>
> I'm in a situation where we allow staff to upload Microsoft Excel files to
> our servers, which we then parse and store the data in DynamoDB.
>
> I've only used file watchers once before, to watch for any change in a
> directory. These seemed to trigger when a file was created in a directory
> -- I recall I then tried to read from such files, but I got an error
> because the file was still being written. I'm curious if there are file
> watchers that I can have trigger when a file is fully uploaded, or fully
> copied?
>
> My goal is to avoid the errors that occur when I try to read from a file
> that is still being written to.
>
>
>
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
-- 

-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone: +49 3721 273445 <+49%203721%20273445>
Fax: +49 3721 273446 <+49%203721%20273446>
Mobile:+49 151 12412427 <+49%201511%202412427>
Web:   http://www.agynamix.de

-- 
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 unsubscribe from this group and stop receiving emails from it, send an
email to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.