Re: Java interop question: proxy or gen-class?

2010-04-14 Thread Meikel Brandmeyer
Hi,

My try. Not tested, though...

(defn create-toggle-shape
  "Creates an ellipse that changes shape when it is clicked."
  []
  (let [fIsPressed? (atom false)
shape   (proxy [PPath] []
  (paint
[#^PPaintContext paintContext]
(if @fIsPressed?
  (doto (.getGraphics paintContext)
(.setPaint (.getPaint this))
(.fill (.getBoundReference this)))
  (proxy-super paint paintContext]
(doto shape
  (.setPathToEllipse 0 0 100 80)
  (.addInputEventListener
(proxy [PBasicInputEventHandler] []
  (mousePressed
[evt]
(proxy-super mousePressed evt)
(reset! fIsPressed? true)
(.repaint shape))
  (mouseReleased
[evt]
(proxy-super mouseReleased evt)
(reset! fIsPressed? false)
(.repaint shape)))

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

To unsubscribe, reply using "remove me" as the subject.


Re: matching symbols in a dictionary

2010-04-14 Thread Jeff Rose
On Apr 13, 11:34 pm, strattonbrazil  wrote:
> I want to map a dictionary and do different things depending on the
> key.  I was planning on using an if-clause, but I'm not sure how to
> compare symbols to strings.
>
> Something like
>
> (map (fn [k v] (if (== k "hello") ... ...) {:hello 1 :goodbye 2})
>
> How would I normally compare symbols and strings?

I recently discovered condp, which is good for doing the equivalent of
a switch statement and more:

(map
  (fn [[k v]]
(condp = k
   :a  (* 2 v)
   :b  (* 3 v)))
  {:a "foo" :b "bar"})

Notice also that you need to put the [k v] inside an additional pair
of brackets in order to destructure the key/value pair.  Otherwise the
anonymous function would just expect two arguments, rather than
destructuring a single argument.

(keyword "foo") => :foo
(name :foo)   => "foo"

-Jeff

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: matching symbols in a dictionary

2010-04-14 Thread Christophe Grand
On Wed, Apr 14, 2010 at 9:33 AM, Jeff Rose  wrote:

> I recently discovered condp, which is good for doing the equivalent of
> a switch statement and more:
>
> (map
>  (fn [[k v]]
>(condp = k
>   :a  (* 2 v)
>   :b  (* 3 v)))
>  {:a "foo" :b "bar"})
>

for true switch statements (with constant values) there is case:
(map
 (fn [[k v]]
   (case k
  :a  (* 2 v)
  :b  (* 3 v)))
 {:a 42 :b 17})

Form (doc case):
  Unlike cond and condp, case does a constant-time dispatch, the
  clauses are not considered sequentially.  All manner of constant
  expressions are acceptable in case, including numbers, strings,
  symbols, keywords, and (Clojure) composites thereof. Note that since
  lists are used to group multiple constants that map to the same
  expression, a vector can be used to match a list if needed. The
  test-constants need not be all of the same type.

hth,

Christophe

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: CSV Lib

2010-04-14 Thread Chris Perkins
On Apr 13, 10:33 am, Stuart Halloway 
wrote:
> And here's a challenge for you: Use protocols to describe a minimal  
> contract for CSV parsing, then show how protocols solve the expression  
> problem by letting you backfit to existing Java libs without wrappers  
> or adapters. It would make the best screencast ever. :-)

I'll counter with a challenge to you, Stuart - explain what the heck
you just said in a way that a dummy like me can understand :)  Really,
I have so far been unable to wrap my head around the whole defprotocol
thing - I just don't get what the point of it is.  A concrete example
explaining the "why" would help a lot.

- Chris Perkins

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: CSV Lib

2010-04-14 Thread Meikel Brandmeyer
Hi,

On Apr 14, 3:53 pm, Chris Perkins  wrote:

> I'll counter with a challenge to you, Stuart - explain what the heck
> you just said in a way that a dummy like me can understand :)  Really,
> I have so far been unable to wrap my head around the whole defprotocol
> thing - I just don't get what the point of it is.  A concrete example
> explaining the "why" would help a lot.

The seq abstraction is a very important aspect of Clojure's core
library. In order to use things like map, filter and friends, Clojure
calls seq on the given thing(s), which returns a seq - a view on the
thing.

One way to implement seq is to have a function with a huge condp which
checks the type of the collection and calls the appropriate my-
collection-seq function. However this is closed: what is not contained
in the condp cannot be converted.

Ok. So let's use in interface: every collection brings its own .seq
method implementing - say - ISeqable. However this is closed again:
while you can easily equip new collection types with the
necessary .seq method it is not possible to retrofit this on existing
types, say java.lang.String.

Now on to protocols:

(defprotocol PSeqable
  (seq [x] "Returns a seq on x"))

New types can implement the PSeqable interface on Java side (or the
protocol on deftype/reify side). But also old types can be
retrofitted!

(extend-protocol PSeqable
  String
  (seq [s] do-stuff-here))

So you get this hairy data collection from some third-party library
you have no control over? No problem. Extend the PSeqable protocol for
your collection and suddenly map, filter, and friends are actually
your friends again.

While this is already possible with multimethods, they have a
performance impact. Protocols - on the other hand - are almost as fast
as a Java interface method call. (AFAIU)

This is roughly my understanding. Please speak up and correct me if I
said something wrong.

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

To unsubscribe, reply using "remove me" as the subject.


requesting help from any IBM JVM users out there

2010-04-14 Thread Stuart Halloway
I am preparing a patch to fix issue #104 [1], a.k.a. "IBM JVM rejects  
member names with dashes (-) that Sun JVMs like just fine." The  
original thread [2] included a patch that uses $ as a delimiter, e.g.  
"who$likes$reading$this". My preference is to use underscores, e.g.  
"isnt_this_much_better".


Two questions for anyone who can test on an IBM JVM:

(1) Is there any reason "_" would be a problem? I can't imagine it  
would since it is used in other places.


(2) While researching this question I noticed that Clojure's name  
convention can also produce the "<" and ">" characters. Are these any  
problem on IBM VMs?


Thanks in advance,
Stu

[1] 
https://www.assembla.com/spaces/clojure/tickets/104-gc-issue-100--gen-class-creating-non-compliant-field-names-
[2] http://groups.google.com/group/clojure/browse_thread/thread/e64719d716c29ce0

--
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

To unsubscribe, reply using "remove me" as the subject.


Forms to strings

2010-04-14 Thread Nicolas Buduroi
Hi, I've got a simple question: When converting a form to a string the
resolved symbols are fully qualified, is there a way to get the string
with just the symbols?

Thanks

- 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

To unsubscribe, reply using "remove me" as the subject.


Re: Forms to strings

2010-04-14 Thread Sean Devlin
user=> (str '(is this what you mean?))
"(is this what you mean?)"

On Apr 14, 11:08 am, Nicolas Buduroi  wrote:
> Hi, I've got a simple question: When converting a form to a string the
> resolved symbols are fully qualified, is there a way to get the string
> with just the symbols?
>
> Thanks
>
> - 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

To unsubscribe, reply using "remove me" as the subject.


Re: Forms to strings

2010-04-14 Thread Nicolas Buduroi
On Apr 14, 11:12 am, Sean Devlin  wrote:
> user=> (str '(is this what you mean?))
> "(is this what you mean?)"

No, more like this:

user=> (str `(str "foo"))
"(clojure.core/str \"foo\")"

I would like to get: "(str \"foo\")"

BTW, I'm not asking for code to do that, just if there's some options
or hidden functionality that would switch off full-qualification.

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: Forms to strings

2010-04-14 Thread Meikel Brandmeyer
Hi,

On Apr 14, 5:23 pm, Nicolas Buduroi  wrote:

> No, more like this:
>
> user=> (str `(str "foo"))
> "(clojure.core/str \"foo\")"
>
> I would like to get: "(str \"foo\")"
>
> BTW, I'm not asking for code to do that, just if there's some options
> or hidden functionality that would switch off full-qualification.

Not, that I am aware off. At least not for syntax-quote. I think,
you'll need a custom quasiquote or use clojure.walk in clever ways.

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

To unsubscribe, reply using "remove me" as the subject.


Re: Forms to strings

2010-04-14 Thread Sean Devlin
Why are you using quasi-quote?

On Apr 14, 11:23 am, Nicolas Buduroi  wrote:
> On Apr 14, 11:12 am, Sean Devlin  wrote:
>
> > user=> (str '(is this what you mean?))
> > "(is this what you mean?)"
>
> No, more like this:
>
> user=> (str `(str "foo"))
> "(clojure.core/str \"foo\")"
>
> I would like to get: "(str \"foo\")"
>
> BTW, I'm not asking for code to do that, just if there's some options
> or hidden functionality that would switch off full-qualification.

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: requesting help from any IBM JVM users out there

2010-04-14 Thread David Andrews
I've fallen victim to #104 in an IBM zSeries environment.  I can't
offer much in the way of Java literacy, but I can certainly test
anything you'd care to toss my 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

To unsubscribe, reply using "remove me" as the subject.


Re: Forms to strings

2010-04-14 Thread Nicolas Buduroi

On Apr 14, 11:44 am, Sean Devlin  wrote:
> Why are you using quasi-quote?

D'oh! For no reason at all, damn I feel stupid, lol! 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

To unsubscribe, reply using "remove me" as the subject.


Re: requesting help from any IBM JVM users out there

2010-04-14 Thread Stuart Halloway
If you apply the patch I have added at https://www.assembla.com/spaces/clojure/tickets/104-gc-issue-100--gen-class-creating-non-compliant-field-names- 
 you should be able to tell pretty quickly.


If you aren't comfortable with git patches, building clojure, etc.  
ping me offline and I can just send you a jar to try.


Stu


I've fallen victim to #104 in an IBM zSeries environment.  I can't
offer much in the way of Java literacy, but I can certainly test
anything you'd care to toss my 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

To unsubscribe, reply using "remove me" as the subject.


--
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: Forms to strings

2010-04-14 Thread Sean Devlin
Happens to all of us :)

On Apr 14, 12:03 pm, Nicolas Buduroi  wrote:
> On Apr 14, 11:44 am, Sean Devlin  wrote:
>
> > Why are you using quasi-quote?
>
> D'oh! For no reason at all, damn I feel stupid, lol! 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

To unsubscribe, reply using "remove me" as the subject.


Conflicting definition for IPersistentVector

2010-04-14 Thread Dan
I'm a Java developer; I work on a project that has adopted Clojure's
data structures as a convenient implementation of immutable sets,
maps, etc.  In attempting to add type parameters to the Clojure
interfaces, I noticed a conflict in the definition of
IPersistentVector.  I assume the problem exists when programming in
Clojure, too.

IPersistentVector implements both Associative and IPersistentStack.
These, in turn, both implement Seqable.  But the element type in the
two cases is different: if I have a vector of Strings,
IPersistentStack says that seq() should enumerate the strings;
Associative says that seq() should enumerate Map.Entries.  The
APersistentVector implementation resolves this conflict by going with
the first: seq() gives you a list of strings.

Put another way, the problem is that if I have an Associative which I
know maps integers to strings, and I invoke seq(), I don't know what
kind of values I'm going to get.

When I say an interface "says" something, there's not actually much
documentation, so that's based on what I think is the natural
interpretation of the interface.  The page at  does say this about IPersistentMap: "seq returns a
sequence of map entries, which are key/value pairs."  There is no such
assertion made about Associatives, but since IPersistentMap implements
Seqable through Associative, it would be odd to specify the contract
for Associative differently.

It looks to me like the best way to handle this would be to eliminate
the connection between Associative and IPersistentCollection, leaving
that connection to the subtypes.  But I don't know what kind of impact
that would have on existing code (if it breaks something, does that
code behave well when given an IPersistentVector?)

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Translation from CL - "On Lisp" program

2010-04-14 Thread Aravindh Johendran
Is there a way to write this in clojure without java's hashmaps or
clojure's atom/ref/var-binding/etc? The program doesn't have to be an
exact translation. I just want similar functionality.

--
>From chapter 6 of On Lisp - Figure 6.5

(defvar *nodes* (make-hash-table))

(defun defnode (name conts &optional yes no)
  (setf (gethash name *nodes*)
(if yes
#’(lambda ()
(format t "~A~%>> " conts)
(case (read)
  (yes (funcall (gethash yes *nodes*)))
  (t (funcall (gethash no *nodes*)
  #’(lambda () conts

(defnode ’people "Is the person a man?" ’male ’female)
(defnode ’male "Is he living?" ’liveman ’deadman)
(defnode ’deadman "Was he American?" ’us ’them)
(defnode ’us "Is he on a coin?" ’coin ’cidence)
(defnode ’coin "Is the coin a penny?" ’penny ’coins)
(defnode ’penny ’lincoln)

(funcall (gethash ’people *nodes*))
-

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: Haskell-style list functions

2010-04-14 Thread hayamiz
> user> (use '[clojure.contrib.seq-utils :only (reductions)])
> nil
> user> (reductions + [1 2 3 4 5])
> (1 3 6 10 15)

Yeah, I think it 'smart'. Thanks for a nice solution.


Yuto HAYAMIZU

On 4月11日, 午後11:48, Steve Purcell  wrote:
> On 10 Apr 2010, at 08:46, Yuto Hayamizu wrote:
>
>
>
> > Hi, all
>
> > I want some list functions inHaskelllike mapAccumL in
> > clojure.contrib, because some sequence operations are difficult with
> > only functions in clojure.core and contrib.
>
> > Think about writing a function 'accum-seq', which takes a sequence of
> > numbers, and returns a sequence of numbers. Each element of returned
> > sequence is sum of numbers from the beginning to its position in given
> > sequence.
>
> > Ex)
> > user> (accum-seq [1, 1, 1, 1, 1])
> > (1 2 3 4 5)
> > user> (accum-seq [1, 2, 3, 4, 5])
> > (1 3 6 10 15)
> > user> (accum-seq [1, -1, 1, -1, 1])
> > (1 0 1 0 1)
>
> > If you know any smart solutions with only currently available
> > functions, please tell me. I mean, 'smart' solutions have no explicit
> > 'lazy-seq', recursion, and return a lazy sequence as a result.
>
> Does this qualify as a 'smart' solution?
>
> user> (use '[clojure.contrib.seq-utils :only (reductions)])
> nil
> user> (reductions + [1 2 3 4 5])
> (1 3 6 10 15)
> user>
>
> -Steve

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: newbie hiccup with hiccup

2010-04-14 Thread Micah Martin
Yup.  0.2.3 solves the problem.  Thanks.

Micah

On Apr 13, 2010, at 8:38 AM, James Reeves wrote:

> On 13 April 2010 14:13, Nurullah Akkaya  wrote:
>> 0.2.2 fixes this issue.
> 
> Yes, and currently Hiccup 0.2.3 is the latest version. I'd recommend
> using 0.2.3, as it has no known bugs as of this post.
> 
> - 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
> 
> To unsubscribe, reply using "remove me" as the subject.

-- 
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


multi project / multi library simultaneous development - best practice?

2010-04-14 Thread Kevin Livingston
I have been reading through the newsgroup on how to set up and
maintain a build/development environment for a large set of projects.
Coming from a CommonLisp world of maintaining/developing multiple
projects and libraries concurrently, the approach put forward in this
post resonates well.

http://groups.google.com/group/clojure/msg/d16a68c22d9fc05b

However, we have lots of java code (legacy and under development)
libraries and projects to work with and integrate with as well... a
tool that makes this more seamless would be beneficial.  (e.g. a
clojure only/specific solution likely won't fly) Making it easier for
the java only developers to work with the clojure stuff would be a
huge win, allowing us to use clojure without inducing any pain for
them...  so if the clojure developers ultimately deploy to something
like maven, that would probably help.

My concern with the Maven and Leiningen approaches for active
development is that they don't seem to allow for trivial co-
development of libraries and projects.  With ASDF (in Lisp) I could
say that one project had build dependencies on another, etc. and they
could happily and trivially be co-developed.  In the Maven / Leiningen
world it seems that each library much be bundled and "published" so
that projects using them can access it, which seems to cripple the
fluidity provided by having a REPL and being able to work with
multiple aspects of your code base at once.  (Leiningen's prolific
replication seems to exacerbate this somewhat, although potentially
makes it easier to debug.)

Am I missing some configuration options with either of these tools
that would make this all more fluid?

Is there a best practice that is to be recommended in such an
environment (multiple java and clojure libraries and projects,
interconnected, and under co-development)?  Anyone else is an
environment like this?

advice is appreciated,
Kevin

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Problem: Multimethod Dispatch Function

2010-04-14 Thread Eduardo Julian
I'm working on an object system called Fenrir, and one of the
functions in my library, called new-obj, is used to make instances of
classes:

(defmulti new-obj #(:_fenrir_class-name %))
(defmethod new-obj ::fObject [fclass & kvals]
(with-meta (apply struct-map (conj kvals (:_fenrir_struct fclass)))
{:_fenrir_class (:_fenrir_class-name fclass)}))

In fObject, the class which all other classes extend, I have
implemented the basic mechanisms for setting slots in struct-objects.
However, when I call the multimethod with something like this:

(new-obj fGameObject :location 'a-loc :sprite 'a-sprite)

I get this error:

1:14 yggdrasil.fenrir.core=> java.lang.IllegalArgumentException: Wrong
number of args passed to: core$fn (repl-1:13)

That sort of thing has also happened to me with other multimethods I'm
working on.

Could anybody help me?

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: multi project / multi library simultaneous development - best practice?

2010-04-14 Thread Sean Devlin
How many developers do you need to coordinate with?

On Apr 14, 2:46 pm, Kevin Livingston
 wrote:
> I have been reading through the newsgroup on how to set up and
> maintain a build/development environment for a large set of projects.
> Coming from a CommonLisp world of maintaining/developing multiple
> projects and libraries concurrently, the approach put forward in this
> post resonates well.
>
> http://groups.google.com/group/clojure/msg/d16a68c22d9fc05b
>
> However, we have lots of java code (legacy and under development)
> libraries and projects to work with and integrate with as well... a
> tool that makes this more seamless would be beneficial.  (e.g. a
> clojure only/specific solution likely won't fly) Making it easier for
> the java only developers to work with the clojure stuff would be a
> huge win, allowing us to use clojure without inducing any pain for
> them...  so if the clojure developers ultimately deploy to something
> like maven, that would probably help.
>
> My concern with the Maven and Leiningen approaches for active
> development is that they don't seem to allow for trivial co-
> development of libraries and projects.  With ASDF (in Lisp) I could
> say that one project had build dependencies on another, etc. and they
> could happily and trivially be co-developed.  In the Maven / Leiningen
> world it seems that each library much be bundled and "published" so
> that projects using them can access it, which seems to cripple the
> fluidity provided by having a REPL and being able to work with
> multiple aspects of your code base at once.  (Leiningen's prolific
> replication seems to exacerbate this somewhat, although potentially
> makes it easier to debug.)
>
> Am I missing some configuration options with either of these tools
> that would make this all more fluid?
>
> Is there a best practice that is to be recommended in such an
> environment (multiple java and clojure libraries and projects,
> interconnected, and under co-development)?  Anyone else is an
> environment like this?
>
> advice is appreciated,
> Kevin

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: multi project / multi library simultaneous development - best practice?

2010-04-14 Thread Phil Hagelberg
On Wed, Apr 14, 2010 at 11:46 AM, Kevin Livingston
 wrote:
> My concern with the Maven and Leiningen approaches for active
> development is that they don't seem to allow for trivial co-
> development of libraries and projects.  With ASDF (in Lisp) I could
> say that one project had build dependencies on another, etc. and they
> could happily and trivially be co-developed.  In the Maven / Leiningen
> world it seems that each library much be bundled and "published" so
> that projects using them can access it, which seems to cripple the
> fluidity provided by having a REPL and being able to work with
> multiple aspects of your code base at once.

We have this problem at work with a large multi-module maven build. It
is definitely a very error-prone situation that needs improvement.

> Is there a best practice that is to be recommended in such an
> environment (multiple java and clojure libraries and projects,
> interconnected, and under co-development)?  Anyone else is an
> environment like this?

It doesn't address the building of Java libraries, but I've recently
added a feature to Leiningen (currently only available in git) that
lets you co-develop several libraries in parallel without going
through an explicit install/fetch-dependencies dance. See this thread
on the Leiningen mailing list for details:

http://groups.google.com/group/leiningen/browse_thread/thread/f67cb42c06515e53

The feature hasn't seen a lot of use, but it is pretty simple.

There is a javac plugin for Leiningen, but it's intended for use in
Clojure projects that happen to have one or two .java files that need
compilation (due to annotations or some such), not for building
all-java projects, so this may not cut it for your purposes. But
either way I would love to get more feedback on the approach.

-Phil

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

To unsubscribe, reply using "remove me" as the subject.


Communication: How to model it?

2010-04-14 Thread alux
Hello,

I want to think loudly today, may be you have suggestions, or the
problemm has been solved already.

I want to do some finite but long two-sided communication, that takes
some time - so like some hundred of strings passing in both
directions. Often alternating, but not always, and not nessesarily so.
In some but not all cases I have a question - response relation (my
side asks the questions, so to say), and there is an easy way to
identify a string as answer to a question, but not everything that
comes back must be a response.

(My current task is to talk to a program, linewise. But maybe the
problem can and should be solved more generally.)

How can I model this in clojure?

My current approach, (pen on paper, still no code):

A question: sends its string, and creates a promise, and puts it in a
map with the question-identifyer as key. The map must be a reference,
because it is changed.

Then there should be a thread, waiting for responses. If a message
arrives, it looks for the identifyer in our map, gets the
corresponding promise from our map, and provides it with the answer.

The client can wait for the answer it expects. How?
What to do with non expected messages?
I still dont know.

Any tips or constructive criticism welcome. Thank you for reading.

Regards, alux

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: Communication: How to model it?

2010-04-14 Thread Anniepoo
what you want is just a stream in each direction.

Bob:  So, how do you feel about the Smith contract?
Fred: It's not a good deal for us

Fred: Do you think we'll have 4 engineers working on it?
Bob: Turn left here
Bob: No, more like 5

Fred: at the light?
Bob: Yes

I'd make a wrapper around a socket connection. If you want an async
call,
like Fred's last question "at the light?"  then have a different send
access that takes two args,
(ask-bob  "at the light?"   (fn [response]  ... handle the
response))

as opposed to
(tell-bob  "blah blah")
that doesn't get a response
(after all, you presumably need to know what question Bob is answering
'yes' to)

ask-bob sends bob an id along with the question, and shoves the
function into a map with id as key
when bob sends a response the function gets called

The recieving end is a good candidate for a multimethod.
the dispatch function would somehow parse the message for type
 and figure out which handler handles it.

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: requesting help from any IBM JVM users out there

2010-04-14 Thread Josh Arnold
According to both the JLS [1] and the JVM Spec [2], neither '>' or '<'
are legal within an identifier;  The various Character.isJava***()
methods return false for those characters.

As for the original problem, I was able to reproduce it on some
Windows IBM JVMs [3] and I verified that applying the patch fixed it.

[1] http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.8
[2] 
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#25339

[3] I used the following JVMs:

Java(TM) SE Runtime Environment (build pwi3260sr2-20080818_01(SR2))
IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Windows Vista x86-32
jvmwi3260-20080816_22093 (JIT enabled, AOT enabled)
J9VM - 20080816_022093_lHdSMr
JIT  - r9_20080721_1330ifx2
GC   - 20080724_AA)
JCL  - 20080808_02

Java(TM) 2 Runtime Environment, Standard Edition (build
pwi32pdev-20070426a)
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows Vista x86-32
j9vmwi3223-20070426 (JIT enabled)
J9VM - 20070420_12448_lHdSMR
JIT  - 20070419_1806_r8
GC   - 200704_19)
JCL  - 20070423


On Apr 14, 12:27 pm, Stuart Halloway 
wrote:
> If you apply the patch I have added 
> athttps://www.assembla.com/spaces/clojure/tickets/104-gc-issue-100--gen...
>   you should be able to tell pretty quickly.
>
> If you aren't comfortable with git patches, building clojure, etc.  
> ping me offline and I can just send you a jar to try.
>
> Stu
>
>
>
> > I've fallen victim to #104 in an IBM zSeries environment.  I can't
> > offer much in the way of Java literacy, but I can certainly test
> > anything you'd care to toss my 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
>
> > To unsubscribe, reply using "remove me" as the subject.

-- 
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


Clojure.contrib.sql example code link is broken

2010-04-14 Thread John Cromartie
The link to the example code for clojure.contrib.sql is broken. It was
very helpful to me, and it might be useful to other people new to both
Clojure and JDBC.

http://code.google.com/p/clojure-contrib/source/browse/trunk/src/clojure/contrib/sql/test.clj
(Linked from http://richhickey.github.com/clojure-contrib/sql-api.html)

-John

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: multi project / multi library simultaneous development - best practice?

2010-04-14 Thread Kevin Livingston
I'm operating in a medium to large academic environment... maybe 10 to
20 people interacting with a half dozen or more in-house libraries and
dozens of projects.  All core/common code (currently) is Java: many
internal libraries and wrappers for external code.  There are numerous
projects with only a couple of developers.  Some of the projects are
used by others, some use some of the others, etc.  with varying
degrees of interconnected-ness.  It's vary likely that while working
on my project, for example, I may have to extend a shared library used
by many of the others.  That library is likely in Java, although, we
may start to produce clojure libraries in addition to clojure
projects.

Do to the fairly distributed and independent nature of much of the
work, an environment where things can live harmoniously would be
extremely valuable.   (and also allow for clojure to be eased into the
system more gracefully without disrupting too much)

Phil in your referenced thread, I have numerous situations that are
very similar to the example provided by Richard Newman.  I'm not sure
I fully appreciate or understand the potential symlink solution?

Kevin


On Apr 14, 2:28 pm, Phil Hagelberg  wrote:
> On Wed, Apr 14, 2010 at 11:46 AM, Kevin Livingston
>
>  wrote:
> > My concern with the Maven and Leiningen approaches for active
> > development is that they don't seem to allow for trivial co-
> > development of libraries and projects.  With ASDF (in Lisp) I could
> > say that one project had build dependencies on another, etc. and they
> > could happily and trivially be co-developed.  In the Maven / Leiningen
> > world it seems that each library much be bundled and "published" so
> > that projects using them can access it, which seems to cripple the
> > fluidity provided by having a REPL and being able to work with
> > multiple aspects of your code base at once.
>
> We have this problem at work with a large multi-module maven build. It
> is definitely a very error-prone situation that needs improvement.
>
> > Is there a best practice that is to be recommended in such an
> > environment (multiple java and clojure libraries and projects,
> > interconnected, and under co-development)?  Anyone else is an
> > environment like this?
>
> It doesn't address the building of Java libraries, but I've recently
> added a feature to Leiningen (currently only available in git) that
> lets you co-develop several libraries in parallel without going
> through an explicit install/fetch-dependencies dance. See this thread
> on the Leiningen mailing list for details:
>
> http://groups.google.com/group/leiningen/browse_thread/thread/f67cb42...
>
> The feature hasn't seen a lot of use, but it is pretty simple.
>
> There is a javac plugin for Leiningen, but it's intended for use in
> Clojure projects that happen to have one or two .java files that need
> compilation (due to annotations or some such), not for building
> all-java projects, so this may not cut it for your purposes. But
> either way I would love to get more feedback on the approach.
>
> -Phil

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

To unsubscribe, reply using "remove me" as the subject.


Dead easy start with Clojure on windows

2010-04-14 Thread Kasim
Hi Guys,

I created a project called ClojureW that makes it super easy to start
with Clojure in Windows. I would be happy to add it to "Getting
Started with Clojure" on assamla but I do not know how.

It is just another effort to make Clojure easily accessible for
Windows user. Here is the link:
http://bitbucket.org/kasim/clojurew/

Here are what you need to get started:
1. Download ClojureW.zip and Unzip to a folder
2. Set CLOJURE_HOME = path/to/unzipped/folder
3. cd path/to/unzipped/folder/bin and run clj or clj cljfile.clj

That is it. Enjoy!

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Erlang like environment

2010-04-14 Thread gary ng
Hi,

I just start to learn about clojure and is wondering if there is any erlang
like environment for clojure ? By that, I mean not just the messaging
passing(which as far as I can tell for clojure is within the same process)
but its live update and sending symbols(and as far as I know functions as
well) across process/vm instances(which can be on the same machine or
another machine within a private network).

-- 
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

To unsubscribe, reply using "remove me" as the subject.


help wanted: tests for c.c.io

2010-04-14 Thread Stuart Halloway
clojure.contrib.io is one of the most used libraries in contrib, and  
it has few automated tests. I have created a ticket for this [1]. If  
you haven't contributed to Clojure before, this is a gentle place to  
get started. You don't need to know Clojure deeply, and there are  
already some tests to help get you started.


Thanks!
Stu

[1] http://www.assembla.com/spaces/clojure-contrib/tickets/75-tests-for-c-c-io

--
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

To unsubscribe, reply using "remove me" as the subject.


Re: Erlang like environment

2010-04-14 Thread Jose A. Ortega Ruiz
gary ng  writes:

> Hi,
>
> I just start to learn about clojure and is wondering if there is any
> erlang like environment for clojure ?

I don't know whether such an environment already exists, but, if not,
one could hack one based on Kilim
(http://www.malhar.net/sriram/kilim/)... klijim anyone? :)

hth,
jao

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: Erlang like environment

2010-04-14 Thread Wilson MacGyver
the closest thing I know is the remote REPL for clojure.

but if you are looking for erlang's style of distributed environment,
it doesn't exist as far as I know.

clojure was designed to solve single machine many-core problems.
while erlang is designed to solved distributed system problems.

On Wed, Apr 14, 2010 at 8:42 PM, gary ng  wrote:
> Hi,
> I just start to learn about clojure and is wondering if there is any erlang
> like environment for clojure ? By that, I mean not just the messaging
> passing(which as far as I can tell for clojure is within the same process)
> but its live update and sending symbols(and as far as I know functions as
> well) across process/vm instances(which can be on the same machine or
> another machine within a private network).
>
> --
> 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

To unsubscribe, reply using "remove me" as the subject.


Re: Clojure.contrib.sql example code link is broken

2010-04-14 Thread Michael Wood
On 14 April 2010 22:18, John Cromartie  wrote:
> The link to the example code for clojure.contrib.sql is broken. It was
> very helpful to me, and it might be useful to other people new to both
> Clojure and JDBC.
>
> http://code.google.com/p/clojure-contrib/source/browse/trunk/src/clojure/contrib/sql/test.clj
> (Linked from http://richhickey.github.com/clojure-contrib/sql-api.html)

I think this is what you're looking for (for clojure 1.1.x):

http://github.com/richhickey/clojure-contrib/blob/1.1.x/src/clojure/contrib/sql/test.clj

or this (for master):

http://github.com/richhickey/clojure-contrib/blob/master/src/test/clojure/clojure/contrib/test_sql.clj

-- 
Michael Wood 

-- 
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

To unsubscribe, reply using "remove me" as the subject.


Re: multi project / multi library simultaneous development - best practice?

2010-04-14 Thread Meikel Brandmeyer
Hi,

I have to live with some proxy restrictions at work which are serious
pain. So I had to recreate several dependencies locally (via git
checkout). I non-intrusively switched all builds to gradle using
clojuresque Clojure plugin.

I can update a dependency by simply doing a new checkout in the repo
directories. Then I can choose to just rebuilt a single project or a
project + all it depends on or a project + all projects depending on
it. Specifying dependencies between the different projects is dead
simple.

The structure is like this:

Root
  + build.gradle
  + settings.gradle
  + .gradle
  + internal_repository
  + ring/...
  + moustache/...
  + hiccup/...

There is no change to the checked out code needed in order to make the
build work. The artifacts are published to the internal repository
from where they are shared between the builds. (Via classpath, not
copying or symlinking.)

Below is an excerpt for your reference of the build.gradle file to
give you an impression how it looks and feels like.

Hope that helps.

Sincerely
Meikel

build.gradle:
subprojects {
usePlugin 'clojure'

group = project.name

configurations.compile.transitive = true

compileClojure.dependsOn compileJava

String localRepo = 'file:///some/local/repo/re/proxy/restrictions'

sourceSets.main.clojure {
srcDir 'src'
}

gradleHomeRepo(repositories)
clojureSnapshotsRepo(repositories)
repositories {
mavenRepo name: 'local', urls: localRepo
mavenCentral()
}

dependencies {
compile 'org.clojure:clojure:1.1.0-master-SNAPSHOT'
compile 'org.clojure:clojure-contrib:1.1.0-master-SNAPSHOT'
}

uploadArchives {
repositories.mavenDeployer {
repository(url: localRepo)
}
}
}

project(':hiccup') {
version = '0.2.3'
}

project(':clj-stacktrace') {
version = '0.1.1'
}

project(':ring:ring-core') {
version = '0.2.0'
group = 'ring'

dependencies {
compile 'commons-codec:commons-codec:1.4'
compile 'commons-io:commons-io:1.4'
compile 'commons-fileupload:commons-fileupload:1.2.1'
compile 'org.mortbay.jetty:servlet-api-2.5:6.1.14'
}
}

project(':ring:ring-devel') {
version = '0.2.0'
group = 'ring'

dependencies {
compile project(':ring:ring-core')
compile project(':clj-html')
compile project(':clj-stacktrace')
}
}

project(':ring:ring-httpcore-adapter') {
version = '0.2.0'
group = 'ring'

dependencies {
compile 'org.apache.httpcomponents:httpcore:4.0.1'
compile 'org.apache.httpcomponents:httpcore-nio:4.0.1'

compile project(':ring:ring-core')
}
}

project(':ring:ring-jetty-adapter') {
version = '0.2.0'
group = 'ring'

dependencies {
compile 'org.mortbay.jetty:jetty:6.1.14'
compile 'org.mortbay.jetty:jetty-util:6.1.14'

compile project(':ring:ring-core')
compile project(':ring:ring-servlet')
}
}

project(':ring:ring-servlet') {
version = '0.2.0'
group = 'ring'

dependencies {
compile 'org.mortbay.jetty:servlet-api-2.5:6.1.14'

compile project(':ring:ring-core')
}
}

project(':moustache') {
version = '1.0.0-SNAPSHOT'

dependencies {
compile project(':ring:ring-core')
}
}

-- 
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: ?: create static inner Java class with constructor argument

2010-04-14 Thread alux
Thank you verec, I hadn't been aware of this.

Kind regards, alux

On 13 Apr., 00:08, verec 
wrote:
> You may also want to browse this thread:
>
> http://groups.google.com/group/clojure/browse_frm/thread/a80e07675663...

-- 
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

To unsubscribe, reply using "remove me" as the subject.