Re: core.logic and aggregates: am i doing it wrong?

2012-05-25 Thread Mark
I'm embarrassed to say how many more scotches it took to come up with:

(defn satisfes-requirements-o [required given]
> (fresh [e]
>(appendo required e given)))
>


On Friday, May 25, 2012 6:35:09 PM UTC-7, Mark wrote:
>
> Two scotches later, I came up with
>
>> (defn satisfes-requirements-o [required given]
>> (fresh [e r s]
>>(membero e given)
>>(conso e r s)
>>(== s required)))
>>
>
> and it seems to do the trick.  I'm not sure about leaving r unbound but my 
> tests pass.  I'd love some feedback on the approach. 
>
> On Friday, May 25, 2012 4:58:14 PM UTC-7, Mark wrote:
>>
>> I confess that the last time I cracked open a Prolog book was lo these 
>> many years ago in college and that I need to re-read The Art but I'm hoping 
>> that someone can point out how I'm thinking about this problem wrongly:
>> I'd like to write a goal that succeeds when given a set of required items 
>> and a set of supplied items, the supplied items is a proper superset of the 
>> required items.  My intuition is that I want a goal that succeeds and 
>> 'returns' the common subset of the two sets and then another goal that 
>> tries to unify the subset with the required items:
>>
>>> (defn satisfes-requirements-o [required given]
>>>   (let [subset (run* [q]
>>>  (membero q required)
>>>  (membero q given))]
>>> (== subset required)))
>>>
>>
>> I'm basically treating the subset operation as a subrouting and using 
>> run*  to aggregate the common elements.  This feels wrong and it feels like 
>> I should use something less procedural but I can't wrap my brain around how 
>> else to approach the problem.  Suggestions?  Hints?
>>
>> 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

Selecting subsets of maps

2012-05-25 Thread Baishampayan Ghose
Hi,

I have a problem wherein I need to select subsets of a given map;
think about select-keys, but with arbitrary nesting.

For example, consider this map -

(def my-map {:name "John Doe"
   :email "j...@doe.com"
   :address {:house "42"
 :street "Moon St."
 :city "San Francisco"
 :state "CA"
 :zip 76509
 :mobile "+1"}
   :ssn "123456"
   :spouse {:name "Jane Doe"
:ssn "654321"
:relation :wife
:address {:house "42"
  :street "Moon St."
  :city "Atlanta"
  :state "GA"
  :zip 76509
  :mobile "+1"}}})

>From the above map, I want to extract this sub-map -

{:spouse {:name "Jane Doe", :address {:state "GA", :city "Atlanta"}},
 :name "John Doe",
 :email "j...@doe.com",
 :address {:state "CA", :city "San Francisco"}}

What would be a good way to express this sub-map so that I can pass it
on to a function?

I am thinking about something like this -

[:name :email {:address [:city :state]} {:spouse [:name {:address
[:city :state]}]}]

Example implementations are also welcome.

Regards,
BG

-- 
Baishampayan Ghose
b.ghose at gmail.com

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


Re: Clojure on Android

2012-05-25 Thread blcooley
On Friday, May 25, 2012 4:45:03 PM UTC-5, HelmutKian wrote:
>
> I've recently been on board a project that will targeting Android, and 
> I've been given pretty much free reign chose my tools.  I'm an experienced 
> Common Lisper and a fairly new Clojure user, but I'd like to know about 
> the feasibility of writing real-world Android applications in Clojure.


The work by Daniel Solano Gomez at https://github.com/sattvik/neko is the 
state of the art, so to speak. There's a start-up time penalty associated 
with loading the runtime, and you'll need Daniel's fork of clojure if you 
want to do anything dynamic. The readme in the repo is pretty good; you 
should check it out.

There's also a google group (clojure-android) which you may have found 
already, and Alex Yakushev has a blog 
at http://clojure-android.blogspot.com/ to cover his work for Google Summer 
of Code (and maybe beyond?).

You might want to check out Daniel's Clojure REPL in Google Play. You can 
use it to evaluate forms on the device, and it will give you some idea of 
the performance of dynamic compilation.

Best regards,
Brian Cooley

-- 
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: maths, functions and solvers

2012-05-25 Thread jlk
Hi Zack

I don't really know enough about core.logic to comment on this.  Brent 
mentions symbolic math and it sounds neat but I'm more interested in 
numerical solutions at the moment.

Cheers


On Saturday, May 26, 2012 10:45:09 AM UTC+10, Brent Millare wrote:
>
> I originally assumed core.logic would be the key to symbolic math, but now 
> I feel that's not really the case. You still need to implement all the 
> algebra manipulation algorithms as usual. One can define the numbers in a 
> different way as Ambrose did in his talk, but I imagine we would need to 
> have much different performance expectations when performing the other 
> symbolic operations. That being said, I would like to see more work going 
> into that type of implementation.
>
> On Thursday, May 24, 2012 8:37:57 PM UTC-4, Zack Maril wrote:
>>
>> Off topic:
>> How hard would it be to build on 
>> core.logicto do math 
>> functions? 
>> -Zack
>>
>>

-- 
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: maths, functions and solvers

2012-05-25 Thread jlk
On Friday, May 25, 2012 9:30:12 AM UTC+10, Stephen Compall wrote:
>
> On May 24, 2012 8:42 AM, "jlk" JLK wrote:
> > However the only way I can think of converting the argument list and the 
> function into a function of one argument is with an intermediate function.
>
> Apply is the standard way to listify a function's arguments.  Where f is a 
> function taking n args, (partial apply f) is a function taking (among other 
> disjoint possibilities) one arg being a list of n values.
>
> > (defn -cat
> >   "example math function"
> >   [{:keys [E A alpha t2 t1 W1 W2 g L T1 T2]}]
> >   (- (+ (* E A alpha (- t2 t1)) (/ (* (sq W1) (sq g) (sq L) E A) (* 24.0 
> (sq T1))) T2) T1 (/ (* (sq W2) (sq g) (sq L) E A) (* 24.0 (sq T2)
>
> Take a look at (meta #'-cat) in this example; you may find it of use.
>
> > As a side note, being able to define functions in infix would also be 
> nice, but I don't feel up to creating a maths parser and dealing with ASTs, 
> although I can visualise how I might manage the variables using this 
> approach.
>
> If you parse Clojure lists, this reduces to a problem of grouping and 
> flipping back to prefix.
>
> Traversable functors and the writer monad are good choices for collecting 
> vars as you are grouping and flipping, though you perhaps have something 
> else in mind.  The real trouble is discriminating between bound and free 
> vars.
>
> -- 
> Stephen Compall
> Greetings from sunny Appleton!
>

Hi Stephen

Firstly thanks for looking at the code - certainly given me a few tips and 
ideas there.  Also I'll look into monads when I get some spare brain time :)

I didn't realise that the argument list was in a var metadata.  Do you know 
if there is similar metadata for an undefined function (fn [] ...)?

Originally what I was thinking of was a kind of 'partial' function taking 
map arguments and that is where I'm heading.

Playing around this morning I think I've stumbled upon what I was after and 
the code is in the devel branch on github.  It's currently horrible, but 
seems to work.  Basically the maths function is provided as a list of 
symbols, then I do some substitution using clojure.walk and produce a 
function of argument whatever is still undefined.  Then I run this through 
eval.

Speaking of it would be nice if eval could directly take a map of symbols 
as an argument.

I'll tidy all this up when I get a chance.


Cheers
 

-- 
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: core.logic and aggregates: am i doing it wrong?

2012-05-25 Thread Mark
Two scotches later, I came up with

> (defn satisfes-requirements-o [required given]
> (fresh [e r s]
>(membero e given)
>(conso e r s)
>(== s required)))
>

and it seems to do the trick.  I'm not sure about leaving r unbound but my 
tests pass.  I'd love some feedback on the approach. 

On Friday, May 25, 2012 4:58:14 PM UTC-7, Mark wrote:
>
> I confess that the last time I cracked open a Prolog book was lo these 
> many years ago in college and that I need to re-read The Art but I'm hoping 
> that someone can point out how I'm thinking about this problem wrongly:
> I'd like to write a goal that succeeds when given a set of required items 
> and a set of supplied items, the supplied items is a proper superset of the 
> required items.  My intuition is that I want a goal that succeeds and 
> 'returns' the common subset of the two sets and then another goal that 
> tries to unify the subset with the required items:
>
>> (defn satisfes-requirements-o [required given]
>>   (let [subset (run* [q]
>>  (membero q required)
>>  (membero q given))]
>> (== subset required)))
>>
>
> I'm basically treating the subset operation as a subrouting and using 
> run*  to aggregate the common elements.  This feels wrong and it feels like 
> I should use something less procedural but I can't wrap my brain around how 
> else to approach the problem.  Suggestions?  Hints?
>
> 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: maths, functions and solvers

2012-05-25 Thread Brent Millare
I originally assumed core.logic would be the key to symbolic math, but now 
I feel that's not really the case. You still need to implement all the 
algebra manipulation algorithms as usual. One can define the numbers in a 
different way as Ambrose did in his talk, but I imagine we would need to 
have much different performance expectations when performing the other 
symbolic operations. That being said, I would like to see more work going 
into that type of implementation.

On Thursday, May 24, 2012 8:37:57 PM UTC-4, Zack Maril wrote:
>
> Off topic:
> How hard would it be to build on 
> core.logicto do math 
> functions? 
> -Zack
>
>

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

core.logic and aggregates: am i doing it wrong?

2012-05-25 Thread Mark
I confess that the last time I cracked open a Prolog book was lo these many 
years ago in college and that I need to re-read The Art but I'm hoping that 
someone can point out how I'm thinking about this problem wrongly:
I'd like to write a goal that succeeds when given a set of required items 
and a set of supplied items, the supplied items is a proper superset of the 
required items.  My intuition is that I want a goal that succeeds and 
'returns' the common subset of the two sets and then another goal that 
tries to unify the subset with the required items:

> (defn satisfes-requirements-o [required given]
>   (let [subset (run* [q]
>  (membero q required)
>  (membero q given))]
> (== subset required)))
>

I'm basically treating the subset operation as a subrouting and using run*  
to aggregate the common elements.  This feels wrong and it feels like I 
should use something less procedural but I can't wrap my brain around how 
else to approach the problem.  Suggestions?  Hints?

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: Lambda: A lniux distro for clojurists

2012-05-25 Thread abaitam
Great idea. But this be implemented as a pallet or vagrant script instead 
of a ready-made VM? 

On Thursday, May 24, 2012 4:11:21 PM UTC-4, banseljaj wrote:
>
> Hello Guys,
>
> I am quite new to clojure, and I am a fan. It's a great thing. One thing 
> that seems missing, however, is a single unified way of setting up the 
> clojure environment. Which seemed pretty daunting to me at first.
>
> So I have decided to create a Linux Distro specifically for Clojure 
> development.
>
> I have been bouncing this idea in #clojure and it got a good response. So 
> now I have started the complete development effort.
>
> My plan so far is as follows.
>
> Mission Statement for the Distro
>
> The distro should be able to:
>
>- Connect to internet.
>- Be able to convert itself into An VM/Iso/LiveCD etc
>- Have all IDEs for Clojure installed and preconfigured.
>   - Eclipse
>   - Vim
>   - Emacs
>   - Netbeans
>- Have a ready to play connection to clojure forums and channels
>- Have at-least one book on clojure programming on board
>- Have following clojure specific features
>   - It should have leiningen installed and configured
>   - It should have a local repo of all current clojure plugins
>   - It should have a local "cloud" on which you can deploy web apps 
>   easily
>   - it should have REPLlabs on baord and configured
>- Have Clojure specific branding
>
>
>
> The packages that are needed absolutely:
>
>- OpenJDK 1.7.0
>- Leiningen
>- Clojure
>- Eclipse
>- Vim
>- Emacs 24
>- Netbeans
>- Emacs Starter kit
>- CCW plugin for eclipse
>- Firefox/Chrome
>- A local webserver
>- Postgresql
>- LXDE/XFCE
>- Gwibber/Other Social network Client
>- xchat
>- irssi
>- git
>- Regular packages for system functioning.
>
>
> I am still open to ideas. I intend to roll it as a complete distro, so I 
> will love any and all input.
>
> For now, the specific things I need input for are:
>
>- Who/How to create the art for branding.
>- Any packages that are missing from the above listing.
>- Any suggestions for the overall functioning.
>
>
> I will soon have an actual website set up.
>
>
> It is my intention to create a fully functional, independent Development 
> environment for Functional programmers by release 2. Right now, I am 
> working on release 0.0.1.
>
> Looking forward to all input.
>
> regards.
>
> banseljaj
>
>
>

-- 
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: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Sean Corfield
On Fri, May 25, 2012 at 2:56 PM, Alan Malloy  wrote:
> This may be good advice in some cases (eg when all network access to
> your server is "trusted"), but on a lot of production servers it
> strikes me as very dangerous to apply this suggestion carelessly.

I was assuming that network access is pretty locked down on production
servers. For example, the port on which we listen is only open on an
internal IP and therefore only within a small, tightly controlled
subnet when we have VPN active. There's no external IP access open.

> This way the only people who can connect remotely are those who have
> permission to get a local application (usually sshd) to forward the
> traffic to the localhost interface on their behalf.

I agree that's a nice, secure alternative.
-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
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: Java Interop Interfaces

2012-05-25 Thread Softaddicts
Right, I forgot about the $ stuff to refer to internal classes.

Luc P.


> I'm assuming it's AdwordsService$V201109/ADGROUP_SERVICE
> 
> Be sure to also import AdwordsService$V201109
> 
> Sent from my iPad
> 
> On May 25, 2012, at 7:20 AM, Softaddicts  wrote:
> 
> > Jason,
> > 
> > Try this 
> > 
> > AdwordsService.V201109/ADGROUP_SERVICE
> > 
> > V looks like an internal class in AdwordsService, the slash is a 
> > delimiter announcing
> > that you want to access the static content of a class, it cannot be used 
> > before
> > unroling the class hierarchy up to the one containing what you want to 
> > access.
> > 
> > You may also try an explicit import of the internal class and then use
> > V201109/ADGROUP_SERVICE.
> > 
> > Luc
> > 
> >> Hello ,
> >> I am trying to make a clojure wrapper for the adwords java api but I
> >> am having trouble with some of the code.
> >> Creating simple objects is fairly straightforward but when it comes to
> >> interfaces quite frankly Clojure is not very intuitive.
> >> I could not find very good examples for how to create them. I am also
> >> confused as when to use proxy or reify.
> >> 
> >> So the java code looks like this:
> >> AdGroupServiceInterface adGroupService =
> >> user.getService(AdWordsService.V201109.ADGROUP_SERVICE);
> >> 
> >> AdwordsService has constants which I try to code like this:
> >> (def ad-service (AdwordsService/V201109/ADGROUP_SERVICE))
> >> ;;this fails with no such namespace
> >> 
> >> Do I use proxy here or reify and how do set the service on the
> >> adGroupService ?
> >> Any pointers in the right direction is welcome.
> >> 
> >> 
> >> /BR
> >> Jason
> >> 
> >> 
> >> 
> >> 
> >> -- 
> >> 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
> >> 
> > --
> > Softaddicts sent by ibisMail from my ipad!
> > 
> > -- 
> > 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
> 
--
Softaddicts sent by ibisMail from my ipad!

-- 
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: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Alan Malloy
On May 25, 2:30 pm, Sean Corfield  wrote:
> The :host specifies the IP (or hostname) to listen on so if you want
> external access you'll need to listen on an IP that is externally
> accessible. If you listen on "0.0.0.0" then it'll listen on any IP
> address so you can REPL in from outside as well as directly on server
> itself (on 127.0.0.1). Our servers have multiple IP addresses and this
> caught me out at first when working with our data center folks and
> setting up VPN/DMZ access to the host/port.

This may be good advice in some cases (eg when all network access to
your server is "trusted"), but on a lot of production servers it
strikes me as very dangerous to apply this suggestion carelessly.
Assuming you have SSH access to the machine, by far the safest way to
do it is to have swank only listen on localhost, and then use SSH port
forwarding to redirect the connection through the localhost interface.
For example:

akm@dev-machine $ ssh -NfL 4010:localhost:4005 production-machine

# from emacs on dev-machine
M-x slime-connect RET RET 4010 RET

This way the only people who can connect remotely are those who have
permission to get a local application (usually sshd) to forward the
traffic to the localhost interface on their behalf.

-- 
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: Lambda: A lniux distro for clojurists

2012-05-25 Thread Curtis Gagliardi
I'll have to check this out when I get home, it sounds like exactly
what I was looking for.  Thanks.

On May 25, 11:01 am, Tom Maynard  wrote:
> On Thursday, May 24, 2012 3:11:21 PM UTC-5, banseljaj wrote:
> > Looking forward to all input.
>
> I suggest bundling Dave Ray's "VimClojure-Easy"
> (http://blog.darevay.com/2011/10/vimclojure-easy/).  It's a fully
> functional, bare-bones Vim + VimClojure, REPL-in-editor setup that's
> completely painless.  Further, the supplied .vimrc is stripped to only the
> entries needed to make it work ... you can merge it with your own, or
> customize it to suit.
>
> I used it myself to get up & running, and then just merged in my own,
> highly customized .vimrc along with my own pathogen-infected .vim directory.
>
> Another suggestion might be to have some kind of Internet file-sharing
> (Dropbox, Ubuntu One, ...) so that users can migrate files from their
> "home" systems to this new one (whether virtualized or in a bootable
> partition).
>
> Otherwise, it looks interesting and I wish you the best with it.  It won't
> convert me, but I expect there is a large target audience for it.
>
> Tom.
>
> regards.
>
>
>
>
>
>
>
>
>
> > banseljaj

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

2012-05-25 Thread HelmutKian
I've recently been on board a project that will targeting Android, and I've 
been given pretty much free reign chose my tools.  I'm an experienced 
Common Lisper and a fairly new Clojure user, but I'd like to know about 
the feasibility of writing real-world Android applications in Clojure.

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

Re: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Karl Krukow
Thanks Sean for the detailed information. This will be really useful to me.

/Karl
On 25/05/2012, at 23.30, Sean Corfield wrote:

> On Fri, May 25, 2012 at 1:46 PM, Phil Hagelberg  wrote:
>> On Fri, May 25, 2012 at 1:41 PM, Karl Krukow  wrote:
>>> If I'm embedding swank clojure server in non-development, the code would 
>>> need to start up swank - how would I do that?
>> Just add swank as a non-dev dependency. The swank-clojure readme
>> actually covers how to do embedding.
> 
> Specifically:
> 
> Add a dependency on [swank-clojure "1.4.2"]
> 
> Then in your code:
> 
> (swank.swank/start-server :host "0.0.0.0" :port 4567) ;; use whatever
> port you want, default is 4005
> 
> You can programmatically stop the server with:
> 
> (swank.swank/stop-server)
> 
> The :host specifies the IP (or hostname) to listen on so if you want
> external access you'll need to listen on an IP that is externally
> accessible. If you listen on "0.0.0.0" then it'll listen on any IP
> address so you can REPL in from outside as well as directly on server
> itself (on 127.0.0.1). Our servers have multiple IP addresses and this
> caught me out at first when working with our data center folks and
> setting up VPN/DMZ access to the host/port.
> 
> Another thing that was a bit of a problem for us was that swank.swank
> does a bunch of stuff at initialization that got in our way (I don't
> remember details) so we actually resolve the symbols at runtime so
> swank.swank is only loaded when we actually start the swank server:
> 
> (defn start-swank
>  "If a swank port is defined for this environment, attempt to start a
>   swank server on that port. Will throw an exception if it's already
>   running on that port etc."
>  []
>  (require 'swank.swank)
>  (when-let [start-server (resolve (symbol "swank.swank/start-server"))]
>(start-server :host "0.0.0.0" :port (:swank-port @my-settings
> 
> my-settings is a delayed map containing application configuration data
> (we delay it because the app needs to bootstrap part way in order to
> read the configuration which gets stored in the map). We use different
> swank ports on different machines to avoid confusion when
> slime-connect'ing in from Emacs.
> -- 
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
> 
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
> 
> -- 
> 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: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Sean Corfield
On Fri, May 25, 2012 at 1:46 PM, Phil Hagelberg  wrote:
> On Fri, May 25, 2012 at 1:41 PM, Karl Krukow  wrote:
>> If I'm embedding swank clojure server in non-development, the code would 
>> need to start up swank - how would I do that?
> Just add swank as a non-dev dependency. The swank-clojure readme
> actually covers how to do embedding.

Specifically:

Add a dependency on [swank-clojure "1.4.2"]

Then in your code:

(swank.swank/start-server :host "0.0.0.0" :port 4567) ;; use whatever
port you want, default is 4005

You can programmatically stop the server with:

(swank.swank/stop-server)

The :host specifies the IP (or hostname) to listen on so if you want
external access you'll need to listen on an IP that is externally
accessible. If you listen on "0.0.0.0" then it'll listen on any IP
address so you can REPL in from outside as well as directly on server
itself (on 127.0.0.1). Our servers have multiple IP addresses and this
caught me out at first when working with our data center folks and
setting up VPN/DMZ access to the host/port.

Another thing that was a bit of a problem for us was that swank.swank
does a bunch of stuff at initialization that got in our way (I don't
remember details) so we actually resolve the symbols at runtime so
swank.swank is only loaded when we actually start the swank server:

(defn start-swank
  "If a swank port is defined for this environment, attempt to start a
   swank server on that port. Will throw an exception if it's already
   running on that port etc."
  []
  (require 'swank.swank)
  (when-let [start-server (resolve (symbol "swank.swank/start-server"))]
(start-server :host "0.0.0.0" :port (:swank-port @my-settings

my-settings is a delayed map containing application configuration data
(we delay it because the app needs to bootstrap part way in order to
read the configuration which gets stored in the map). We use different
swank ports on different machines to avoid confusion when
slime-connect'ing in from Emacs.
-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
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: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Karl Krukow
Sorry, and thanks for the info.

/Karl
On 25/05/2012, at 22.46, Phil Hagelberg wrote:

> On Fri, May 25, 2012 at 1:41 PM, Karl Krukow  wrote:
>> If I'm embedding swank clojure server in non-development, the code would 
>> need to start up swank - how would I do that?
> 
> Just add swank as a non-dev dependency. The swank-clojure readme
> actually covers how to do embedding.
> 
> -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

-- 
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: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Phil Hagelberg
On Fri, May 25, 2012 at 1:41 PM, Karl Krukow  wrote:
> If I'm embedding swank clojure server in non-development, the code would need 
> to start up swank - how would I do that?

Just add swank as a non-dev dependency. The swank-clojure readme
actually covers how to do embedding.

-Phil

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


Re: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Karl Krukow
Sorry to ask what may be an obvious question to you. But what is a good way of 
embedding a swank server inside a production app? I'm kind of an emacs 
beginning and in development I just do lein swank and slime-connect from Emacs- 
that works fine.

If I'm embedding swank clojure server in non-development, the code would need 
to start up swank - how would I do that?

Thanks, 




On 24/05/2012, at 19.19, Sean Corfield wrote:

> On Thu, May 24, 2012 at 9:07 AM, blais  wrote:
>> Is it common for people deploying Clojure servers in a production
>> environment to leave a swank or nrepl server running for making live bug
>> fixes? Do you guys do this?  Would you advise against it?
> 
> We've recently added swank server to our production machines - we
> generally start/stop it as needed via an admin console - mostly for
> live in-process debugging but we have, very occasionally, applied live
> fixes. As Jay and Phil said, not for the faint of heart and not as a
> replacement for your normal release process. The in-process debugging
> has proved incredibly valuable for us as we've gone thru a massive
> data migration and this allows us to easily repro and analyze
> unexpected behavior that arises from bad/legacy data that have slipped
> thru our automated and manual QA processes. Most fixes that we've
> applied live have actually been scripts to clean up anomalies in the
> legacy data rather than live code updates.
> -- 
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
> 
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
> 
> -- 
> 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: Do you leave a Swank / nREPL in your production servers?

2012-05-25 Thread Sean Allen
I've never done this w/ clojure but in my last job when we were using
Gemstone Smalltalk, I made live code changes on a fairly regular basis.

Get the quick fix out. Do the complete release cycle later. It was only a
difference of 25 minutes, but often worth it.

Not for the faint of heart. I felt a little better doing it in Gemstone
because it was transaction based and I had to commit all my code changes.
A wee bit of a net that was.

-Sean-


On Thursday, May 24, 2012, blais wrote:

> Hi,
> Just curious...
> Is it common for people deploying Clojure servers in a production
> environment to leave a swank or nrepl server running for making live bug
> fixes? Do you guys do this?  Would you advise against it?
> 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 '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  'clojure%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: Lambda: A lniux distro for clojurists

2012-05-25 Thread Matti Oinas
It could be possible to do all this by using package manager's like
apt or pacman. Create a package that depends on the software that is
allready available from the debian repository and provides all the
missing software. I think pacman in Arch linux could handle the same
by using package groups.

In distributions like Debian and Arch you can install only what you
want and configure it by yourself or use some predefined package group
and configuration. Installing desktop environment like gnome, kde and
xfce is a good example of this. In Arch for example I could install
only the parts of XFCE that I need and configure it afterwards like I
first did. The next time I installed XFCE in arch I just installed
xfce4 and xfce4-goodies groups and everything was ready.

It would probably be much less work to maintain and keep up to date
this kind of package than to maintain the whole distribution.

On Fri, May 25, 2012 at 2:18 PM, Roberto Mannai  wrote:
> You could consider the SuseStudio online environment [1]. It allows simple
> fine-graned package selections and different output formats (live CD, ISOs,
> VMware / VirtualBox / KVM image, Amazon EC2 image).
>
> [1] http://susestudio.com/
> Examples: http://susestudio.com/browse
>
>
> On Thu, May 24, 2012 at 10:11 PM, banseljaj 
> wrote:
>>
>> The distro should be able to:
>>
>> Connect to internet.
>> Be able to convert itself into An VM/Iso/LiveCD etc
>> Have all IDEs for Clojure installed and preconfigured.
>>
>> Eclipse
>> Vim
>> Emacs
>> Netbeans
>>
>> Have a ready to play connection to clojure forums and channels
>> Have at-least one book on clojure programming on board
>> Have following clojure specific features
>>
>> It should have leiningen installed and configured
>> It should have a local repo of all current clojure plugins
>> It should have a local "cloud" on which you can deploy web apps easily
>> it should have REPLlabs on baord and configured
>>
>> Have Clojure specific branding
>>
>>
>>
>> The packages that are needed absolutely:
>>
>> OpenJDK 1.7.0
>> Leiningen
>> Clojure
>> Eclipse
>> Vim
>> Emacs 24
>> Netbeans
>> Emacs Starter kit
>> CCW plugin for eclipse
>> Firefox/Chrome
>> A local webserver
>> Postgresql
>> LXDE/XFCE
>> Gwibber/Other Social network Client
>> xchat
>> irssi
>> git
>> Regular packages for system functioning.
>>
>>
>> I am still open to ideas. I intend to roll it as a complete distro, so I
>> will love any and all input.
>>
>> For now, the specific things I need input for are:
>>
>> Who/How to create the art for branding.
>> Any packages that are missing from the above listing.
>> Any suggestions for the overall functioning.
>>
>>
>
> --
> 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: Lambda: A lniux distro for clojurists

2012-05-25 Thread Jake Johnson
I like this idea a lot. My suggestions would be to base it on something
like Lubuntu. I have Ubuntu installed as dual-boot, but I tend to do most
of my work in Win7, so having a performance-oriented, small linux distro
installed inside VirtualBox helps if I don't want to reboot. I imagine
there will be others who would like to do the same. My other suggestion is
to base it on a distro that is extremely easy to install (like Ubuntu). I
just think it is always a good idea when creating something like this to
cater to the inexperienced guys, so that you attract as many newcomers as
possible. The experienced guys can set everything up themselves.

I would certainly use it for Overtone dev. Win7 isn't getting along well,
and I don't have the time right not to set up a virtual linux box to get it
running. Downloading and installing a small, simple distro would take care
of a lot of it for me.

On Thu, May 24, 2012 at 4:11 PM, banseljaj wrote:

> Hello Guys,
>
> I am quite new to clojure, and I am a fan. It's a great thing. One thing
> that seems missing, however, is a single unified way of setting up the
> clojure environment. Which seemed pretty daunting to me at first.
>
> So I have decided to create a Linux Distro specifically for Clojure
> development.
>
> I have been bouncing this idea in #clojure and it got a good response. So
> now I have started the complete development effort.
>
> My plan so far is as follows.
>
> Mission Statement for the Distro
>
> The distro should be able to:
>
>- Connect to internet.
>- Be able to convert itself into An VM/Iso/LiveCD etc
>- Have all IDEs for Clojure installed and preconfigured.
>   - Eclipse
>   - Vim
>   - Emacs
>   - Netbeans
>- Have a ready to play connection to clojure forums and channels
>- Have at-least one book on clojure programming on board
>- Have following clojure specific features
>   - It should have leiningen installed and configured
>   - It should have a local repo of all current clojure plugins
>   - It should have a local "cloud" on which you can deploy web apps
>   easily
>   - it should have REPLlabs on baord and configured
>- Have Clojure specific branding
>
>
>
> The packages that are needed absolutely:
>
>- OpenJDK 1.7.0
>- Leiningen
>- Clojure
>- Eclipse
>- Vim
>- Emacs 24
>- Netbeans
>- Emacs Starter kit
>- CCW plugin for eclipse
>- Firefox/Chrome
>- A local webserver
>- Postgresql
>- LXDE/XFCE
>- Gwibber/Other Social network Client
>- xchat
>- irssi
>- git
>- Regular packages for system functioning.
>
>
> I am still open to ideas. I intend to roll it as a complete distro, so I
> will love any and all input.
>
> For now, the specific things I need input for are:
>
>- Who/How to create the art for branding.
>- Any packages that are missing from the above listing.
>- Any suggestions for the overall functioning.
>
>
> I will soon have an actual website set up.
>
>
> It is my intention to create a fully functional, independent Development
> environment for Functional programmers by release 2. Right now, I am
> working on release 0.0.1.
>
> Looking forward to all input.
>
> regards.
>
> banseljaj
>
>
>  --
> 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

Clojure Pretty Printing with Blogger

2012-05-25 Thread Jake Johnson
Hi, guys. Has anyone had any luck with using
google-code-prettifyand
http://google-code-prettify.googlecode.com/svn/trunk/src/lang-clj.jstogether
on blogger? I followed
http://www.tkglaser.net/2012/03/syntax-highlighting-in-blogger.html,
but I can't get Clojure to display correctly, at least yet.

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

Re: [ANN] clojure-echonest-api

2012-05-25 Thread Simone Mosciatti
Yes, you right.
Definitely both atom and dynamic is too much, the idea is to set once for 
the whole section at the very start, given anyway the possibility to change 
it by bindig when it is necessary...

I guess that i should use only dynamic... but i got some problem changing 
the var...
I should look better at the doc...

Il giorno venerdì 25 maggio 2012 01:49:41 UTC-5, Ulises ha scritto:
>
> > I am unsure about the atom of api-key, in theory i won't need to change 
> my 
> > api-key, but idk... You can get a lot of api-key gratis which are a 
> little 
> > limited or just one payed api-key that can do everything... 
>
> My point was that once you've declared api-key {:dynamic true} (which 
> by the way is not necessary if you define your api key as an atom) you 
> can then either bind it to a different value in a particular thread 
> with (binding ...) or in a particular context with (with-redef ...)[1] 
>
> This approach works fine when you regularly change your api key 
> depending on the context, however I'm not entirely sure how things 
> would work if you want to set your api-key once for an entire session. 
>
> U 
>
> [1] http://clojure.org/vars 
>

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

2012-05-25 Thread Brent Millare
Until C-in-C works for all the features in Clojure (as long as it makes 
sense), clojure-py will have to wait since vanilla clojure already provides 
that.

0MQ seems interesting. The big advantage I see to this approach is it takes 
care of marking when a send is completed while the program is still 
running, so I don't have to re-incur the startup and shutdown overhead. 
importing sympy takes a lot of time so this might be worthwhile
 

> Since you can't bring the python to the JVM you could try bringing the 
> clojure to python with clojure-py[1] :).  Clojure-py is pretty new though 
> so depending on the nature of your project it may not be a great fit.  
> Another option for inter-process communication would be to use zeromq since 
> both python and clojure bindings exist.  This would at least be a better 
> solution than shelling out to python everything time you needed to use the 
> library.
>
> -Ben
>
>
> 1. https://github.com/halgari/clojure-py
>  

-- 
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: ClojureScript Optimization

2012-05-25 Thread David Nolen
On Fri, May 25, 2012 at 2:16 PM, Aaron  wrote:

> I've noticed that the size of my compiled .js file is well over 100k even
> with advanced optimizations turned on.  I noticed I was using an older
> revision of the clojurescript compiler so I just updated to the latest
> master commit thinking that maybe that would help.  Now my generated
> javascript file is 22k larger.  Why would the newer version be producing
> larger files and is there any plan on the roadmap to try to reduce these
> file sizes?  I would think that since I didn't change any of my code, with
> the proper optimization this new 22k overhead should have been eliminated.
> Is there a general understanding as to why the generated output is so
> large?  I really enjoy using clojurescript and hope that at some point
> there will be a way to have it generate smaller files.


After gzipping a 122k of JS should still be a competitive with a gzipped
jQuery - a common dependency for many websites - so I think we're doing ok
as far as size goes.

Part of the reason the code size has been growing recently is that
ClojureScript now ships with a full set of persistent data structures.
There are other optimizations liked chunked sequences, reducers, and the
reader which also increase the footprint some.

Once the performance work has settled down we plan on taking a deeper look
at issues around dead code elimination -
http://dev.clojure.org/jira/browse/CLJS-257. From some initial
investigation we're certainly not doing the best we could.

Or, if you'd to see that happen sooner we welcome your contribution!

David

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

ClojureScript Optimization

2012-05-25 Thread Aaron
I've noticed that the size of my compiled .js file is well over 100k even 
with advanced optimizations turned on.  I noticed I was using an older 
revision of the clojurescript compiler so I just updated to the latest 
master commit thinking that maybe that would help.  Now my generated 
javascript file is 22k larger.  Why would the newer version be producing 
larger files and is there any plan on the roadmap to try to reduce these 
file sizes?  I would think that since I didn't change any of my code, with 
the proper optimization this new 22k overhead should have been eliminated.  
Is there a general understanding as to why the generated output is so 
large?  I really enjoy using clojurescript and hope that at some point 
there will be a way to have it generate smaller files.

-- 
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: core.match - matching missing map values

2012-05-25 Thread David Nolen
There's a ticket for this. Patches welcome.

I've been busy with ClojureScript related things so I haven't given
core.match much attention recently. core.match is very alpha status -
importantly it does not work with AOT. I would not rely on it for anything
critical until I or someone else gets to these kinds of issues.

On Fri, May 25, 2012 at 2:02 PM, David McNeil wrote:

> I expected this to match, but it did not.
>
> (clojure.core.match/match [{}]
> [{:x (x :when nil?)}]
> ["match" x])
> ;;=> nil
>
> Instead, I was able to make this work:
>
> (clojure.core.match/match [{}]
> [{:x (x :when #(=
> :clojure.core.match/not-found %))}]
> ["match" x])
> ;;=> ["match" nil]
>
> I am curious: is this by design?
>
> Thanks.
> -David McNeil
>
> --
> 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

core.match - matching missing map values

2012-05-25 Thread David McNeil
I expected this to match, but it did not.

(clojure.core.match/match [{}]
[{:x (x :when nil?)}]
["match" x])
;;=> nil

Instead, I was able to make this work:

(clojure.core.match/match [{}]
[{:x (x :when #(= :clojure.core.match/not-found 
%))}]
["match" x])
;;=> ["match" nil]

I am curious: is this by design?

Thanks.
-David McNeil

-- 
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: Lambda: A lniux distro for clojurists

2012-05-25 Thread banseljaj
I don't like to reboot eithere, but you can run this into a VM.

Also, I have already tried SUSE Studio. It has too much bloat to be 
considered viable, plus SUSE is slowly dying.


On Friday, May 25, 2012 3:31:43 PM UTC+5, thorwil wrote:
>
> On 05/24/2012 10:11 PM, banseljaj wrote: 
>
> > So I have decided to create a Linux Distro specifically for Clojure 
> > development. 
>
> My own problem with specialist distros is that I'm interested in too 
> many areas (and don't like to reboot). Just Clojure seems to be a *very* 
> narrow focus. Is there anyone here who does not use other programming 
> languages? 
>
>
> > I am still open to ideas. I intend to roll it as a complete distro, so I 
> > will love any and all input. 
>
> It would be kinda fitting to have functional package management 
> (http://nixos.org/nix/). 
>
> I wonder if installing a distro could be similar to cloning a repo, 
> later on allowing you to take all your local changes to apply them as 
> patch to the next release version. 
>
>
> -- 
> Thorsten Wilms 
>
> thorwil's design for free software: 
> http://thorwil.wordpress.com/ 
>

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

Re: Lambda: A lniux distro for clojurists

2012-05-25 Thread Tom Maynard


On Thursday, May 24, 2012 3:11:21 PM UTC-5, banseljaj wrote:
 

> Looking forward to all input.
>
>
I suggest bundling Dave Ray's "VimClojure-Easy" 
(http://blog.darevay.com/2011/10/vimclojure-easy/).  It's a fully 
functional, bare-bones Vim + VimClojure, REPL-in-editor setup that's 
completely painless.  Further, the supplied .vimrc is stripped to only the 
entries needed to make it work ... you can merge it with your own, or 
customize it to suit.

I used it myself to get up & running, and then just merged in my own, 
highly customized .vimrc along with my own pathogen-infected .vim directory.

Another suggestion might be to have some kind of Internet file-sharing  
(Dropbox, Ubuntu One, ...) so that users can migrate files from their 
"home" systems to this new one (whether virtualized or in a bootable 
partition).

Otherwise, it looks interesting and I wish you the best with it.  It won't 
convert me, but I expect there is a large target audience for it.

Tom.

regards.
>
> banseljaj
>
>
>

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

2012-05-25 Thread Ben Mabey

On 5/25/12 9:08 AM, Brent Millare wrote:

Ok well installing is easy

java -jar jython_installer-2.5.2.jar

# to get python repl
java -jar jython

# to run script
java -jar jython ./python.py

I haven't looked into calling python functions (running in jython) 
from clojure though because unfortunately, I wasn't able to get jython 
to work with sympy, which is what I wanted clojure to interact with to 
do symbolic math do to a bug in jython, so this is already a dead end 
for me.


I guess its down to calling python as a script from within clojure, 
not ideal, but I guess it'll work for now.


Since you can't bring the python to the JVM you could try bringing the 
clojure to python with clojure-py[1] :).  Clojure-py is pretty new 
though so depending on the nature of your project it may not be a great 
fit.  Another option for inter-process communication would be to use 
zeromq since both python and clojure bindings exist.  This would at 
least be a better solution than shelling out to python everything time 
you needed to use the library.


-Ben


1. https://github.com/halgari/clojure-py

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

2012-05-25 Thread Brent Millare
Ok well installing is easy

java -jar jython_installer-2.5.2.jar

# to get python repl
java -jar jython

# to run script
java -jar jython ./python.py

I haven't looked into calling python functions (running in jython) from 
clojure though because unfortunately, I wasn't able to get jython to work 
with sympy, which is what I wanted clojure to interact with to do symbolic 
math do to a bug in jython, so this is already a dead end for me.

I guess its down to calling python as a script from within clojure, not 
ideal, but I guess it'll work for now.

-- 
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: Java Interop Interfaces

2012-05-25 Thread Jason S
I will try this!
Thanks a lot all.

On May 25, 2:23 pm, Jay Fields  wrote:
> I'm assuming it's AdwordsService$V201109/ADGROUP_SERVICE
>
> Be sure to also import AdwordsService$V201109
>
> Sent from my iPad
>
> On May 25, 2012, at 7:20 AM, Softaddicts  wrote:
>
>
>
>
>
>
>
> > Jason,
>
> > Try this
>
> > AdwordsService.V201109/ADGROUP_SERVICE
>
> > V looks like an internal class in AdwordsService, the slash is a 
> > delimiter announcing
> > that you want to access the static content of a class, it cannot be used 
> > before
> > unroling the class hierarchy up to the one containing what you want to 
> > access.
>
> > You may also try an explicit import of the internal class and then use
> > V201109/ADGROUP_SERVICE.
>
> > Luc
>
> >> Hello ,
> >> I am trying to make a clojure wrapper for the adwords java api but I
> >> am having trouble with some of the code.
> >> Creating simple objects is fairly straightforward but when it comes to
> >> interfaces quite frankly Clojure is not very intuitive.
> >> I could not find very good examples for how to create them. I am also
> >> confused as when to use proxy or reify.
>
> >> So the java code looks like this:
> >> AdGroupServiceInterface adGroupService =
> >> user.getService(AdWordsService.V201109.ADGROUP_SERVICE);
>
> >> AdwordsService has constants which I try to code like this:
> >> (def ad-service (AdwordsService/V201109/ADGROUP_SERVICE))
> >> ;;this fails with no such namespace
>
> >> Do I use proxy here or reify and how do set the service on the
> >> adGroupService ?
> >> Any pointers in the right direction is welcome.
>
> >> /BR
> >> Jason
>
> >> --
> >> 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
>
> > --
> > Softaddicts sent by ibisMail from my ipad!
>
> > --
> > 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: Java Interop Interfaces

2012-05-25 Thread Jay Fields
I'm assuming it's AdwordsService$V201109/ADGROUP_SERVICE

Be sure to also import AdwordsService$V201109

Sent from my iPad

On May 25, 2012, at 7:20 AM, Softaddicts  wrote:

> Jason,
> 
> Try this 
> 
> AdwordsService.V201109/ADGROUP_SERVICE
> 
> V looks like an internal class in AdwordsService, the slash is a 
> delimiter announcing
> that you want to access the static content of a class, it cannot be used 
> before
> unroling the class hierarchy up to the one containing what you want to access.
> 
> You may also try an explicit import of the internal class and then use
> V201109/ADGROUP_SERVICE.
> 
> Luc
> 
>> Hello ,
>> I am trying to make a clojure wrapper for the adwords java api but I
>> am having trouble with some of the code.
>> Creating simple objects is fairly straightforward but when it comes to
>> interfaces quite frankly Clojure is not very intuitive.
>> I could not find very good examples for how to create them. I am also
>> confused as when to use proxy or reify.
>> 
>> So the java code looks like this:
>> AdGroupServiceInterface adGroupService =
>> user.getService(AdWordsService.V201109.ADGROUP_SERVICE);
>> 
>> AdwordsService has constants which I try to code like this:
>> (def ad-service (AdwordsService/V201109/ADGROUP_SERVICE))
>> ;;this fails with no such namespace
>> 
>> Do I use proxy here or reify and how do set the service on the
>> adGroupService ?
>> Any pointers in the right direction is welcome.
>> 
>> 
>> /BR
>> Jason
>> 
>> 
>> 
>> 
>> -- 
>> 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
>> 
> --
> Softaddicts sent by ibisMail from my ipad!
> 
> -- 
> 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: Java Interop Interfaces

2012-05-25 Thread Jay Fields
This should help: 
http://blog.jayfields.com/2011/01/clojure-using-java-inner-classes.html

Sorry for the short response - I'm on my phone, so I can't really put together 
a more detailed email. 

Sent from my iPhone

On May 24, 2012, at 9:21 AM, Jason S  wrote:

> Hello ,
> I am trying to make a clojure wrapper for the adwords java api but I
> am having trouble with some of the code.
> Creating simple objects is fairly straightforward but when it comes to
> interfaces quite frankly Clojure is not very intuitive.
> I could not find very good examples for how to create them. I am also
> confused as when to use proxy or reify.
> 
> So the java code looks like this:
> AdGroupServiceInterface adGroupService =
> user.getService(AdWordsService.V201109.ADGROUP_SERVICE);
> 
> AdwordsService has constants which I try to code like this:
> (def ad-service (AdwordsService/V201109/ADGROUP_SERVICE))
> ;;this fails with no such namespace
> 
> Do I use proxy here or reify and how do set the service on the
> adGroupService ?
> Any pointers in the right direction is welcome.
> 
> 
> /BR
> Jason
> 
> 
> 
> 
> -- 
> 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: Java Interop Interfaces

2012-05-25 Thread Softaddicts
Jason,

Try this 

AdwordsService.V201109/ADGROUP_SERVICE

V looks like an internal class in AdwordsService, the slash is a delimiter 
announcing
that you want to access the static content of a class, it cannot be used before
unroling the class hierarchy up to the one containing what you want to access.

You may also try an explicit import of the internal class and then use
V201109/ADGROUP_SERVICE.

Luc

> Hello ,
> I am trying to make a clojure wrapper for the adwords java api but I
> am having trouble with some of the code.
> Creating simple objects is fairly straightforward but when it comes to
> interfaces quite frankly Clojure is not very intuitive.
> I could not find very good examples for how to create them. I am also
> confused as when to use proxy or reify.
> 
> So the java code looks like this:
> AdGroupServiceInterface adGroupService =
> user.getService(AdWordsService.V201109.ADGROUP_SERVICE);
> 
> AdwordsService has constants which I try to code like this:
> (def ad-service (AdwordsService/V201109/ADGROUP_SERVICE))
> ;;this fails with no such namespace
> 
> Do I use proxy here or reify and how do set the service on the
> adGroupService ?
> Any pointers in the right direction is welcome.
> 
> 
> /BR
> Jason
> 
> 
> 
> 
> -- 
> 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
> 
--
Softaddicts sent by ibisMail from my ipad!

-- 
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: Lambda: A lniux distro for clojurists

2012-05-25 Thread Roberto Mannai
You could consider the SuseStudio online environment [1]. It allows simple
fine-graned package selections and different output formats (live CD, ISOs,
VMware / VirtualBox / KVM image, Amazon EC2 image).

[1] http://susestudio.com/
Examples: http://susestudio.com/browse

On Thu, May 24, 2012 at 10:11 PM, banseljaj wrote:

> The distro should be able to:
>
>- Connect to internet.
>- Be able to convert itself into An VM/Iso/LiveCD etc
>- Have all IDEs for Clojure installed and preconfigured.
>   - Eclipse
>   - Vim
>   - Emacs
>   - Netbeans
>- Have a ready to play connection to clojure forums and channels
>- Have at-least one book on clojure programming on board
>- Have following clojure specific features
>   - It should have leiningen installed and configured
>   - It should have a local repo of all current clojure plugins
>   - It should have a local "cloud" on which you can deploy web apps
>   easily
>   - it should have REPLlabs on baord and configured
>- Have Clojure specific branding
>
>
>
> The packages that are needed absolutely:
>
>- OpenJDK 1.7.0
>- Leiningen
>- Clojure
>- Eclipse
>- Vim
>- Emacs 24
>- Netbeans
>- Emacs Starter kit
>- CCW plugin for eclipse
>- Firefox/Chrome
>- A local webserver
>- Postgresql
>- LXDE/XFCE
>- Gwibber/Other Social network Client
>- xchat
>- irssi
>- git
>- Regular packages for system functioning.
>
>
> I am still open to ideas. I intend to roll it as a complete distro, so I
> will love any and all input.
>
> For now, the specific things I need input for are:
>
>- Who/How to create the art for branding.
>- Any packages that are missing from the above listing.
>- Any suggestions for the overall functioning.
>
>
>

-- 
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: Lambda: A lniux distro for clojurists

2012-05-25 Thread Thorsten Wilms

On 05/24/2012 10:11 PM, banseljaj wrote:


So I have decided to create a Linux Distro specifically for Clojure
development.


My own problem with specialist distros is that I'm interested in too 
many areas (and don't like to reboot). Just Clojure seems to be a *very* 
narrow focus. Is there anyone here who does not use other programming 
languages?




I am still open to ideas. I intend to roll it as a complete distro, so I
will love any and all input.


It would be kinda fitting to have functional package management
(http://nixos.org/nix/).

I wonder if installing a distro could be similar to cloning a repo, 
later on allowing you to take all your local changes to apply them as 
patch to the next release version.



--
Thorsten Wilms

thorwil's design for free software:
http://thorwil.wordpress.com/

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


Re: Parallel doseq?

2012-05-25 Thread Carlo Zancanaro
You're doing all your computation in the generation of the lazy
sequence (which is in order). Then you're mapping "identity" in
parallel, but that doesn't do anything.

If you're willing to lose the "for" style bindings, try something more
like this:

(defmacro pdoseq
  "Run over a sequence in parallel (like pmap)"
  [seq-exprs & body]
  (let [pairs (partition 2 seq-exprs)]
`(do (doall (pmap (fn ~(vec (map first pairs)) ~@body) ~@(map
second pairs))) nil)))

On Thu, May 24, 2012 at 3:56 PM, Cedric Greevey  wrote:
> For some reason, this doesn't actually seem to be executing in parallel:
>
> (defmacro pdoseq
>  "Bindings as for for, but parallel execution as per pmap, pcalls,
> pvalues; returns
>   nil."
>  [seq-exprs & body]
>  `(do
>     (doall
>       (pmap identity
>             (for ~seq-exprs (do ~@body)))
>     nil)))
>
> user=> (pdoseq [i (range 10)] (println n))
> 0
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
>
> Never any interleaving of output and if I give it a big CPU-bound job
> to do for each integer it only saturates one core.
>
> I thought it might be a chunked-seq issue, but:
>
> user=> (chunked-seq? (range 10))
> false
>
> --
> 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


Java Interop Interfaces

2012-05-25 Thread Jason S
Hello ,
I am trying to make a clojure wrapper for the adwords java api but I
am having trouble with some of the code.
Creating simple objects is fairly straightforward but when it comes to
interfaces quite frankly Clojure is not very intuitive.
I could not find very good examples for how to create them. I am also
confused as when to use proxy or reify.

So the java code looks like this:
AdGroupServiceInterface adGroupService =
user.getService(AdWordsService.V201109.ADGROUP_SERVICE);

AdwordsService has constants which I try to code like this:
(def ad-service (AdwordsService/V201109/ADGROUP_SERVICE))
;;this fails with no such namespace

Do I use proxy here or reify and how do set the service on the
adGroupService ?
Any pointers in the right direction is welcome.


/BR
Jason




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


Lambda: A lniux distro for clojurists

2012-05-25 Thread banseljaj
Hello Guys,

I am quite new to clojure, and I am a fan. It's a great thing. One thing 
that seems missing, however, is a single unified way of setting up the 
clojure environment. Which seemed pretty daunting to me at first.

So I have decided to create a Linux Distro specifically for Clojure 
development.

I have been bouncing this idea in #clojure and it got a good response. So 
now I have started the complete development effort.

My plan so far is as follows.

Mission Statement for the Distro

The distro should be able to:

   - Connect to internet.
   - Be able to convert itself into An VM/Iso/LiveCD etc
   - Have all IDEs for Clojure installed and preconfigured.
  - Eclipse
  - Vim
  - Emacs
  - Netbeans
   - Have a ready to play connection to clojure forums and channels
   - Have at-least one book on clojure programming on board
   - Have following clojure specific features
  - It should have leiningen installed and configured
  - It should have a local repo of all current clojure plugins
  - It should have a local "cloud" on which you can deploy web apps 
  easily
  - it should have REPLlabs on baord and configured
   - Have Clojure specific branding
   


The packages that are needed absolutely:

   - OpenJDK 1.7.0
   - Leiningen
   - Clojure
   - Eclipse
   - Vim
   - Emacs 24
   - Netbeans
   - Emacs Starter kit
   - CCW plugin for eclipse
   - Firefox/Chrome
   - A local webserver
   - Postgresql
   - LXDE/XFCE
   - Gwibber/Other Social network Client
   - xchat
   - irssi
   - git
   - Regular packages for system functioning.


I am still open to ideas. I intend to roll it as a complete distro, so I 
will love any and all input.

For now, the specific things I need input for are:

   - Who/How to create the art for branding.
   - Any packages that are missing from the above listing.
   - Any suggestions for the overall functioning.


I will soon have an actual website set up.


It is my intention to create a fully functional, independent Development 
environment for Functional programmers by release 2. Right now, I am 
working on release 0.0.1.

Looking forward to all input.

regards.

banseljaj


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