Re: RC 16: Last chance to test against Clojure 1.5 before it ships

2013-02-14 Thread Tassilo Horn
Stuart Halloway  writes:

> If you care about Clojure 1.5 compatibility for your codebase, please
> test it against RC 16 as soon as possible.

My code using tons of protocols, some deftypes, and the new reducers
here and there still compiles, runs, and all tests pass.  That said,
I've always used the most bleeding-edge 1.5 alphas, betas, RCs, so that
actually means only that there's no breakage to features I use in a very
recent commit while there might still be compatibitily issues when
coming from 1.4.

Bye,
Tassilo

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




:use an entire namespace full of protocols or stick with :require?

2013-02-14 Thread Jim foo.bar
I know that using a bare :use in the ns macro is generally frowned upon 
as it provides no hints about what is actually being used...


However, I 've got 2 namespaces 'abstractions.clj' and 
'concretions.clj'...concretions.clj will eventually use all the 
protocols defined in abstractions.clj...at the moment it doesn't but as 
I work through it I want to provide concrete records for *all* the 
protocols...


Should I just go and :use the entire thing or should I stick with 
:require and keep typing 'pro/XXX' a million times? That specific 
namespace is very central to my work...


Jim

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

To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Help on implementing a simple java (openNLP) EventStream interface

2013-02-14 Thread Joachim De Beule
Hi All,

I want to turn a clojure sequence into an 'EventStream' java interface in 
clojure 
(see 
http://opennlp.apache.org/documentation/1.5.2-incubating/apidocs/opennlp-maxent/index.html).
 
Basically this is an object that implements next() and hasNext() methods.

I know this can be done with proxy:

(proxy [EventStream] []
   (hasNext [] ...)
   (next [] (Event. ...) ...))

What I am not sure about is how to deal with state. More precisely, the 
object returned by the above call to proxy obviously must somehow keep a 
pointer to the current position in the input sequence and increment the 
index after a call to next() etc.

Any ideas on how to best do something like this?

Thanks a lot!
Joachim. 
   

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




Re: Belgium Clojure Meetup

2013-02-14 Thread Joachim De Beule
Hi there,

I might join if the event takes place in Ghent.

grtz

Op maandag 11 februari 2013 23:11:36 UTC+1 schreef Thomas Goossens het 
volgende:
>
> *With some fellow Belgian clojurians (Frederik De 
> Bleser& Wim De Clerq)  I’m planning to organise a 
> Clojure meetup in Belgium while 
> being inspired by the Amsterdam clojurians. So far no decisions have been 
> made so don’t expect to find information like the planning, a date and the 
> location in this post yet. This message is merely a quick check whether 
> people are interested. If you are interested in a meetup, please let us 
> know.
>
> Why a meetup?
> It is always interesting to meet people with common interests. Wanting to 
> share opinions, insights and projects is a really valuable virtue. Sharing 
> ideas gets more fun and easy if you can talk to each other in person. It's 
> the interaction that makes the transfer rate of knowledge increase rapidly. 
> Doing this in group only makes this process more pleasurable and 
> interesting.
>
> What will it be about?
> There are a lot of options of what the meetup could be about. So this part 
> of the meetup is still in brainstorm-phase.
> For instance, we could have some sessions on some different clojure 
> related topics / projects. The topics might be very diverse: going from big 
> data, music/visuals, core.logic, to meta-stuff and projects you worked on.
>
> A quick idea: One might give a session on heroku, where we build a website 
> for this meetup group and deploy it to heroku. (Or something alike)
>
> If you have any interesting ideas about what we could do as well, don’t 
> hesitate to let us know. Also if you are interested in giving a session you 
> can let us know as well.
>
> Where and when?
> At this early stage of setup, it is really hard to tell. But belgium is 
> not that large so a finding a suitable location shouldn’t be that hard.
> Nevertheless,  I would like to ask anyone interested in the meetup to 
> leave a comment to let us know what city you live in, what time of the day 
> you would prefer and what locations you prefer.
>
> What now?
> Everything is still a bit vague at the moment but as soon as decisions are 
> going to be made, I’ll be sure to post updates. 
> We really hope that we’ll be able to get it started so any advice is 
> really appreciated (also from non belgian people!)
>
> You can also follow the latest developments by following @belgiumclj on 
> twitter. *
>

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




Re: :use an entire namespace full of protocols or stick with :require?

2013-02-14 Thread Dave Sann
I don't like :use because I can't tell where things come from.

require :refer [...] 

is good is you don't want the prefix.


On Friday, 15 February 2013 00:26:50 UTC+11, Jim foo.bar wrote:
>
>  I know that using a bare :use in the ns macro is generally frowned upon 
> as it provides no hints about what is actually being used...
>
> However, I 've got 2 namespaces 'abstractions.clj' and 
> 'concretions.clj'...concretions.clj will eventually use all the protocols 
> defined in abstractions.clj...at the moment it doesn't but as I work 
> through it I want to provide concrete records for *all* the protocols... 
>
> Should I just go and :use the entire thing or should I stick with :require 
> and keep typing 'pro/XXX' a million times? That specific namespace is very 
> central to my work... 
>
> Jim
>  

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




Re: Help on implementing a simple java (openNLP) EventStream interface

2013-02-14 Thread Ulises
How about having your methods access an atom provided in a closure like
it's done here:
http://kotka.de/blog/2010/03/proxy_gen-class_little_brother.html

U


On 14 February 2013 13:58, Joachim De Beule wrote:

> Hi All,
>
> I want to turn a clojure sequence into an 'EventStream' java interface in
> clojure (see
> http://opennlp.apache.org/documentation/1.5.2-incubating/apidocs/opennlp-maxent/index.html).
> Basically this is an object that implements next() and hasNext() methods.
>
> I know this can be done with proxy:
>
> (proxy [EventStream] []
>(hasNext [] ...)
>(next [] (Event. ...) ...))
>
> What I am not sure about is how to deal with state. More precisely, the
> object returned by the above call to proxy obviously must somehow keep a
> pointer to the current position in the input sequence and increment the
> index after a call to next() etc.
>
> Any ideas on how to best do something like this?
>
> Thanks a lot!
> Joachim.
>
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: Help on implementing a simple java (openNLP) EventStream interface

2013-02-14 Thread Joachim De Beule
Thanks! So you mean like this (assuming some function elt->event):

(defn seq->event-stream [input-seq]
  (let [remaining (atom input-seq)]
(proxy [EventStream] []
  (next [] (let [current (first @remaining)]
(swap! remaining rest)
(elt->event current)))
  (hasNext [] (not (empty? @remaining))



2013/2/14 Ulises 

> How about having your methods access an atom provided in a closure like
> it's done here:
> http://kotka.de/blog/2010/03/proxy_gen-class_little_brother.html
>
> U
>
>
> On 14 February 2013 13:58, Joachim De Beule wrote:
>
>> Hi All,
>>
>> I want to turn a clojure sequence into an 'EventStream' java interface in
>> clojure (see
>> http://opennlp.apache.org/documentation/1.5.2-incubating/apidocs/opennlp-maxent/index.html).
>> Basically this is an object that implements next() and hasNext() methods.
>>
>> I know this can be done with proxy:
>>
>> (proxy [EventStream] []
>>(hasNext [] ...)
>>(next [] (Event. ...) ...))
>>
>> What I am not sure about is how to deal with state. More precisely, the
>> object returned by the above call to proxy obviously must somehow keep a
>> pointer to the current position in the input sequence and increment the
>> index after a call to next() etc.
>>
>> Any ideas on how to best do something like this?
>>
>> Thanks a lot!
>> Joachim.
>>
>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: Help on implementing a simple java (openNLP) EventStream interface

2013-02-14 Thread Ulises
Without testing or anything that looks reasonable enough. I'm sure that
there are plenty caveats around infinite seqs, etc. though.


On 14 February 2013 14:22, Joachim De Beule wrote:

> Thanks! So you mean like this (assuming some function elt->event):
>
> (defn seq->event-stream [input-seq]
>   (let [remaining (atom input-seq)]
> (proxy [EventStream] []
>   (next [] (let [current (first @remaining)]
> (swap! remaining rest)
> (elt->event current)))
>   (hasNext [] (not (empty? @remaining))
>
>
>
> 2013/2/14 Ulises 
>
>> How about having your methods access an atom provided in a closure like
>> it's done here:
>> http://kotka.de/blog/2010/03/proxy_gen-class_little_brother.html
>>
>> U
>>
>>
>> On 14 February 2013 13:58, Joachim De Beule 
>> wrote:
>>
>>> Hi All,
>>>
>>> I want to turn a clojure sequence into an 'EventStream' java interface
>>> in clojure (see
>>> http://opennlp.apache.org/documentation/1.5.2-incubating/apidocs/opennlp-maxent/index.html).
>>> Basically this is an object that implements next() and hasNext() methods.
>>>
>>> I know this can be done with proxy:
>>>
>>> (proxy [EventStream] []
>>>(hasNext [] ...)
>>>(next [] (Event. ...) ...))
>>>
>>> What I am not sure about is how to deal with state. More precisely, the
>>> object returned by the above call to proxy obviously must somehow keep a
>>> pointer to the current position in the input sequence and increment the
>>> index after a call to next() etc.
>>>
>>> Any ideas on how to best do something like this?
>>>
>>> Thanks a lot!
>>> Joachim.
>>>
>>>
>>> --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>  --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




How to set the value of a static variable in a java factory class from clojure?

2013-02-14 Thread Joachim De Beule
Hi All,


I know how to call static java methods such as the ones defined here: 
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.opennlp/opennlp-maxent/3.0.2-incubating/opennlp/maxent/GIS.java,
 
e.g. trainModel(...). 

However, before I call this method I want to change the value of the 
variable SMOOTHING_OBSERVATION (see above link section 
#SMOOTHING_OBSERVATION).

My problem is that I don't know how to do that from clojure?

Thanks a lot!
Joachim

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




Re: How to set the value of a static variable in a java factory class from clojure?

2013-02-14 Thread Baishampayan Ghose
Haven't looked at the code, but `set!` should work. ~BG

Sent from phone. Please excuse brevity.
On 14 Feb 2013 21:30, "Joachim De Beule"  wrote:

> Hi All,
>
>
> I know how to call static java methods such as the ones defined here:
> http://grepcode.com/file/repo1.maven.org/maven2/org.apache.opennlp/opennlp-maxent/3.0.2-incubating/opennlp/maxent/GIS.java,
> e.g. trainModel(...).
>
> However, before I call this method I want to change the value of the
> variable SMOOTHING_OBSERVATION (see above link section
> #SMOOTHING_OBSERVATION).
>
> My problem is that I don't know how to do that from clojure?
>
> Thanks a lot!
> Joachim
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: how to automatically and idiomatically add newlines to clojure code in emacs

2013-02-14 Thread Mayank Jain
@Feng
It doesn't clean up the way John is looking to clean some code like this:

(defun func1 [a b c d] (func5 (let [f (func3 c)] (func2 a b f)) (let
> [e 5] (func4 c d e
>



On Tue, Feb 12, 2013 at 9:11 AM, Feng Shen  wrote:

>
> (defun indent-buffer ()
>   (interactive)
>   (indent-region (point-min) (point-max)))
> (defun cleanup-buffer ()
>   (interactive)
>   (indent-buffer)
>   (untabify-buffer)
>   (delete-trailing-whitespace))
> ;; bind to other key if you like(global-set-key (kbd "M-q") 'cleanup-buffer)
>
>
> cleanup-buffer is very fast, I hit it all the time.
>
>
>
> On Tuesday, February 12, 2013 10:28:43 AM UTC+8, John Fries wrote:
>>
>> Clojure Users,
>>
>> I'm relatively new to clojure and wanted to get some workflow advice.
>>
>> I often find myself staring at something like this:
>> (defun func1 [a b c d] (func5 (let [f (func3 c)] (func2 a b f)) (let
>> [e 5] (func4 c d e
>>
>> and wishing for a function to automatically and idiomatically break it
>> up into multiple lines and indent it:
>> (defun func1 [a b c d]
>>   (func5
>>   (let [f (func3 c)]
>> (func2 a b f))
>>   (let [e 5]
>>  (func4 c d e
>>
>> I find the latter form more readable, but inserting the newlines by
>> hand is getting repetitive (also, I am not always confident in my
>> choice of idiomatic breakpoints). Once I insert the newlines, I can
>> trigger auto-indentation by hitting M-q (which on my system is mapped
>> to paredit-reindent-defun) or by highlighting the region and hitting
>> M-C-\ (which on my system is indent-region).
>>
>> My question(s) is:
>> How are people currently handling this situation? Is it part of most
>> people's clojure/emacs workflow to
>> 1) Just insert the newlines by hand? (perhaps I'm the only one finding
>> this repetitive)
>> 2) Do people have some accepted pretty printing function they are
>> using within emacs?
>> 3) Is there some larger issue I'm not seeing that maybe makes this
>> whole idea irrelevant?
>>
>> I've seen this document:
>> http://richhickey.github.com/**clojure/doc/clojure/pprint/**
>> PrettyPrinting.html
>> But I haven't found any guide to using that function *within emacs*.
>> If this is not a common thing to do, then why is it not common?
>>
>> Thanks,
>> John
>>
>> caveat: My init.el is an amalgam of ideas from ESK, prelude and emacs
>> live, so it could be the case that this functionality is provided out
>> of the box, if only I were configured properly. If people have some
>> way of doing this in their emacs environment, a clue as to the kit or
>> configuration you are using would be very much appreciated.
>>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Regards,
Mayank.

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




Re: how to automatically and idiomatically add newlines to clojure code in emacs

2013-02-14 Thread Moritz Ulrich
C-u M-x indent-pp-sexp

On Thu, Feb 14, 2013 at 6:06 PM, Mayank Jain  wrote:
> @Feng
> It doesn't clean up the way John is looking to clean some code like this:
>
>
>> (defun func1 [a b c d] (func5 (let [f (func3 c)] (func2 a b f)) (let
>> [e 5] (func4 c d e
>
>
>
>
> On Tue, Feb 12, 2013 at 9:11 AM, Feng Shen  wrote:
>>
>>
>>
>> (defun indent-buffer ()
>>   (interactive)
>>   (indent-region (point-min) (point-max)))
>>
>> (defun cleanup-buffer ()
>>   (interactive)
>>   (indent-buffer)
>>   (untabify-buffer)
>>   (delete-trailing-whitespace))
>>
>> ;; bind to other key if you like
>> (global-set-key (kbd "M-q") 'cleanup-buffer)
>>
>>
>> cleanup-buffer is very fast, I hit it all the time.
>>
>>
>>
>> On Tuesday, February 12, 2013 10:28:43 AM UTC+8, John Fries wrote:
>>>
>>> Clojure Users,
>>>
>>> I'm relatively new to clojure and wanted to get some workflow advice.
>>>
>>> I often find myself staring at something like this:
>>> (defun func1 [a b c d] (func5 (let [f (func3 c)] (func2 a b f)) (let
>>> [e 5] (func4 c d e
>>>
>>> and wishing for a function to automatically and idiomatically break it
>>> up into multiple lines and indent it:
>>> (defun func1 [a b c d]
>>>   (func5
>>>   (let [f (func3 c)]
>>> (func2 a b f))
>>>   (let [e 5]
>>>  (func4 c d e
>>>
>>> I find the latter form more readable, but inserting the newlines by
>>> hand is getting repetitive (also, I am not always confident in my
>>> choice of idiomatic breakpoints). Once I insert the newlines, I can
>>> trigger auto-indentation by hitting M-q (which on my system is mapped
>>> to paredit-reindent-defun) or by highlighting the region and hitting
>>> M-C-\ (which on my system is indent-region).
>>>
>>> My question(s) is:
>>> How are people currently handling this situation? Is it part of most
>>> people's clojure/emacs workflow to
>>> 1) Just insert the newlines by hand? (perhaps I'm the only one finding
>>> this repetitive)
>>> 2) Do people have some accepted pretty printing function they are
>>> using within emacs?
>>> 3) Is there some larger issue I'm not seeing that maybe makes this
>>> whole idea irrelevant?
>>>
>>> I've seen this document:
>>>
>>> http://richhickey.github.com/clojure/doc/clojure/pprint/PrettyPrinting.html
>>> But I haven't found any guide to using that function *within emacs*.
>>> If this is not a common thing to do, then why is it not common?
>>>
>>> Thanks,
>>> John
>>>
>>> caveat: My init.el is an amalgam of ideas from ESK, prelude and emacs
>>> live, so it could be the case that this functionality is provided out
>>> of the box, if only I were configured properly. If people have some
>>> way of doing this in their emacs environment, a clue as to the kit or
>>> configuration you are using would be very much appreciated.
>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>
>
>
>
> --
> Regards,
> Mayank.
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

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

Google Summer of Code 2013

2013-02-14 Thread Daniel Solano Gómez
Hello, all,

It's official:  Google Summer of Code 2013 is on.

Last year, Clojure was able to get four students who worked on projects 
like Typed Clojure, Clojure on Android, Clojure and Lua, and Overtone, and 
I'd love to see Clojure be a mentoring organisation again this year.

I have created a GSoC 2013 page on the Clojure community wiki 
. 
 Here you will be able to find the latest information about what's going on 
with Clojure's GSoC 2013 effort and how to get involved.

Here's some ways you can help:

* Let people in your local user groups or university know about Clojure and 
GSoC.
* If you're going to Clojure/West, attend the GSoC unsession.

For students

* Start researching project ideas and get involved with the relevant 
communities to find mentors.

For developers:

Does your open source project have a backlog of features to implement? 
 GSoC is a great way to draw new contributors to your project.

* Post it to the project idea page and become a mentor.
* Let people know about GSoC on your project mailing list.

I'd like to thank everyone in advance for helping with our GSoC 2013 
project.

Sincerely,

Daniel

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




proper way to override clojure.core functions without getting warning/error

2013-02-14 Thread AtKaaZ
Let's say I want to override clojure.core/sorted?

(ns random.learning.clojure.overridex
  (:refer-clojure :exclude [sorted?]))

(defn sorted? [coll]
  {:pre [ (coll? coll)]}
  (clojure.core/sorted? coll))

I'm using Eclipse+counterclockwise, so loading this namespace(Ctrl+Alt+L)
first time gives no warnings/errors, loading it second time, one warning
and no errors, and subsequent times it's loaded there are no
errors/warnings.

the warning is this:
WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace:
random.learning.clojure.overridex, being replaced by:
#'random.learning.clojure.overridex/sorted?

I could ignore the warning, no problem, but then I try to use this
namespace in another namespace:

(ns random.learning.clojure.usetheoverridexns
  (:use random.learning.clojure.overridex)
  )

(and
  (= false (sorted? '(1 2)))
  (= true (sorted? (sorted-set 1 2


When I load this namespace first time I get:
WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace:
random.learning.clojure.usetheoverridexns, being replaced by:
#'random.learning.clojure.overridex/sorted?
true
I could ignore that, but then I load it again(and any subsequent time) and
this is an error (not just a warning that can be ignored):

IllegalStateException sorted? already refers to:
#'random.learning.clojure.overridex/sorted? in namespace:
random.learning.clojure.usetheoverridexns
clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)

Notice there's no "true" aka return value.

When I actually close the REPL, and Ctrl+Alt+L load only this latter
namespace I get this:

;; Clojure 1.5.0-RC16
;; Switching to random.learning.clojure.usetheoverridexns namespace
WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace:
random.learning.clojure.usetheoverridexns, being replaced by:
#'random.learning.clojure.overridex/sorted?
true
*IllegalStateException sorted? already refers to:
#'random.learning.clojure.overridex/sorted? in namespace:
random.learning.clojure.usetheoverridexns
clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)*


and any subsequent loads, show only the part in bold.

 While this may be some ccw issue, I am probably also doing something wrong
that I could be doing better.
 What is the way to do this? especially in the latter namespace which is
using the namespace which has overridden the sorted?
 I do want the overridden "sorted?" to actually be available and override
the clojure.core/sorted? in any namespaces that are using the overridex
namespace.


Thank you.

-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Google Summer of Code 2013

2013-02-14 Thread David Nolen
WOOT!

I'm of course more than happy to mentor any projects around ClojureScript,
core.logic, and core.match.

David


On Thu, Feb 14, 2013 at 1:03 PM, Daniel Solano Gómez wrote:

> Hello, all,
>
> It's official:  Google Summer of Code 2013 is on.
>
> Last year, Clojure was able to get four students who worked on projects
> like Typed Clojure, Clojure on Android, Clojure and Lua, and Overtone, and
> I'd love to see Clojure be a mentoring organisation again this year.
>
> I have created a GSoC 2013 page on the Clojure community wiki <
> http://dev.clojure.org/display/community/Google+Summer+of+Code+2013>.
>  Here you will be able to find the latest information about what's going on
> with Clojure's GSoC 2013 effort and how to get involved.
>
> Here's some ways you can help:
>
> * Let people in your local user groups or university know about Clojure
> and GSoC.
> * If you're going to Clojure/West, attend the GSoC unsession.
>
> For students
>
> * Start researching project ideas and get involved with the relevant
> communities to find mentors.
>
> For developers:
>
> Does your open source project have a backlog of features to implement?
>  GSoC is a great way to draw new contributors to your project.
>
> * Post it to the project idea page and become a mentor.
> * Let people know about GSoC on your project mailing list.
>
> I'd like to thank everyone in advance for helping with our GSoC 2013
> project.
>
> Sincerely,
>
> Daniel
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: Help on implementing a simple java (openNLP) EventStream interface

2013-02-14 Thread Max Penet

Also It looks like you could use reify instead of proxy here, it would 
improve performance. 

http://clojuredocs.org/clojure_core/clojure.core/reify

- Max

On Thursday, February 14, 2013 3:26:02 PM UTC+1, Ulises wrote:
>
> Without testing or anything that looks reasonable enough. I'm sure that 
> there are plenty caveats around infinite seqs, etc. though.
>
>
> On 14 February 2013 14:22, Joachim De Beule 
> 
> > wrote:
>
>> Thanks! So you mean like this (assuming some function elt->event):
>>
>> (defn seq->event-stream [input-seq]
>>   (let [remaining (atom input-seq)]
>> (proxy [EventStream] []
>>   (next [] (let [current (first @remaining)]
>> (swap! remaining rest)
>> (elt->event current)))
>>   (hasNext [] (not (empty? @remaining))
>>
>>
>>
>> 2013/2/14 Ulises >
>>
>>> How about having your methods access an atom provided in a closure like 
>>> it's done here: 
>>> http://kotka.de/blog/2010/03/proxy_gen-class_little_brother.html
>>>
>>> U
>>>
>>>
>>> On 14 February 2013 13:58, Joachim De Beule 
>>> 
>>> > wrote:
>>>
 Hi All,

 I want to turn a clojure sequence into an 'EventStream' java interface 
 in clojure (see 
 http://opennlp.apache.org/documentation/1.5.2-incubating/apidocs/opennlp-maxent/index.html).
  
 Basically this is an object that implements next() and hasNext() methods.

 I know this can be done with proxy:

 (proxy [EventStream] []
(hasNext [] ...)
(next [] (Event. ...) ...))

 What I am not sure about is how to deal with state. More precisely, the 
 object returned by the above call to proxy obviously must somehow keep a 
 pointer to the current position in the input sequence and increment the 
 index after a call to next() etc.

 Any ideas on how to best do something like this?

 Thanks a lot!
 Joachim. 


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

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

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




Why is this so difficult?

2013-02-14 Thread BJG145
Having studied Lisp decades ago I like the look of Clojure a lot. But as a 
complete newbie when it comes to modern software development, I'm 
exasperated by what strikes me as a very difficult and primitive set of 
tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
homepage boasts that "Leinigen offers the easiest way to get started with 
Clojure", but this simply isn't true. The easiest way to get started with 
Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
that I'd probably have given up by now. 

What got me back into programming recently was a Lua-based development 
environment for Android called Gideros. Lua seems popular for developing 
apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
language, though I'd like to use something more Lisp-like. Maybe the tools 
are just too difficult for me at the moment, though I'll persevere for a 
bit. I'd like to achieve some simple graphics on an Android device at 
least. I've come across some tutorials for CLojure and jMonkey and I'm 
wondering to dive into that, though I'm still unsure whether OpenGL is the 
way to go for simple 2D stuff...

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




Re: proper way to override clojure.core functions without getting warning/error

2013-02-14 Thread Anthony Grimes
The problem is that your first namespace defines 'sorted?' and your second 
namespace just uses the namespace, thus overriding 'sorted?'. You have two 
options here. Your biggest project is that you're using ':use'. Use 
':require' instead. Something like `(:require 
[random.learning.clojure.overridex :as overridex])`. Your second option is 
to do the :refer-clojure dance in this namespace as well, but really you 
should just use :require and qualify the namespace.

On Thursday, February 14, 2013 10:04:55 AM UTC-8, AtKaaZ wrote:
>
> Let's say I want to override clojure.core/sorted?
>
> (ns random.learning.clojure.overridex
>   (:refer-clojure :exclude [sorted?]))
>
> (defn sorted? [coll]
>   {:pre [ (coll? coll)]}
>   (clojure.core/sorted? coll))
>
> I'm using Eclipse+counterclockwise, so loading this namespace(Ctrl+Alt+L) 
> first time gives no warnings/errors, loading it second time, one warning 
> and no errors, and subsequent times it's loaded there are no 
> errors/warnings.
>
> the warning is this:
> WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace: 
> random.learning.clojure.overridex, being replaced by: 
> #'random.learning.clojure.overridex/sorted?
>
> I could ignore the warning, no problem, but then I try to use this 
> namespace in another namespace:
>
> (ns random.learning.clojure.usetheoverridexns
>   (:use random.learning.clojure.overridex)
>   )
>
> (and 
>   (= false (sorted? '(1 2)))
>   (= true (sorted? (sorted-set 1 2
>
>
> When I load this namespace first time I get:
> WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace: 
> random.learning.clojure.usetheoverridexns, being replaced by: 
> #'random.learning.clojure.overridex/sorted?
> true
> I could ignore that, but then I load it again(and any subsequent time) and 
> this is an error (not just a warning that can be ignored):
>
> IllegalStateException sorted? already refers to: 
> #'random.learning.clojure.overridex/sorted? in namespace: 
> random.learning.clojure.usetheoverridexns  
> clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)
>
> Notice there's no "true" aka return value.
>
> When I actually close the REPL, and Ctrl+Alt+L load only this latter 
> namespace I get this:
>
> ;; Clojure 1.5.0-RC16
> ;; Switching to random.learning.clojure.usetheoverridexns namespace
> WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace: 
> random.learning.clojure.usetheoverridexns, being replaced by: 
> #'random.learning.clojure.overridex/sorted?
> true
> *IllegalStateException sorted? already refers to: 
> #'random.learning.clojure.overridex/sorted? in namespace: 
> random.learning.clojure.usetheoverridexns  
> clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)*
>
>
> and any subsequent loads, show only the part in bold.
>
>  While this may be some ccw issue, I am probably also doing something 
> wrong that I could be doing better.
>  What is the way to do this? especially in the latter namespace which is 
> using the namespace which has overridden the sorted?
>  I do want the overridden "sorted?" to actually be available and override 
> the clojure.core/sorted? in any namespaces that are using the overridex 
> namespace.
>
>
> Thank you.
>
> -- 
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Why is this so difficult?

2013-02-14 Thread Timothy Baldridge
Can you explain a bit more? What do you find difficult about Leinigen?

Thanks,

Timothy


On Thu, Feb 14, 2013 at 11:42 AM, BJG145  wrote:

> Having studied Lisp decades ago I like the look of Clojure a lot. But as a
> complete newbie when it comes to modern software development, I'm
> exasperated by what strikes me as a very difficult and primitive set of
> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen
> homepage boasts that "Leinigen offers the easiest way to get started with
> Clojure", but this simply isn't true. The easiest way to get started with
> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found
> that I'd probably have given up by now.
>
> What got me back into programming recently was a Lua-based development
> environment for Android called Gideros. Lua seems popular for developing
> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat
> language, though I'd like to use something more Lisp-like. Maybe the tools
> are just too difficult for me at the moment, though I'll persevere for a
> bit. I'd like to achieve some simple graphics on an Android device at
> least. I've come across some tutorials for CLojure and jMonkey and I'm
> wondering to dive into that, though I'm still unsure whether OpenGL is the
> way to go for simple 2D stuff...
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

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




Re: Why is this so difficult?

2013-02-14 Thread Anthony Grimes
Well, leiningen isn't just the best way to get started with Clojure, it's 
the best way to install and work with Clojure. Leiningen isn't simply a 
beginners tool. It's the toolbox for the Clojure programmer. Regardless of 
what IDE or editor you use, you're still going to want Leiningen if you're 
going to program in Clojure. Unless you prefer using maven directly, 
Leiningen is one of few options and is certainly a good one. I'm not sure 
what your complaint against Leiningen is. Maybe if you could clarify?

In any case, Clojure can be a tough language to get into initially just 
because of the overhead of learning JVMisms as well. You'll get the hang of 
it if you stick with it. I recommend grabbing a book if you've got the time 
to read it. Clojure Programming is a good one. I'm trying to figure out if 
there is a specific question hidden in there. Is there?

On Thursday, February 14, 2013 10:42:57 AM UTC-8, BJG145 wrote:
>
> Having studied Lisp decades ago I like the look of Clojure a lot. But as a 
> complete newbie when it comes to modern software development, I'm 
> exasperated by what strikes me as a very difficult and primitive set of 
> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
> homepage boasts that "Leinigen offers the easiest way to get started with 
> Clojure", but this simply isn't true. The easiest way to get started with 
> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
> that I'd probably have given up by now. 
>
> What got me back into programming recently was a Lua-based development 
> environment for Android called Gideros. Lua seems popular for developing 
> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
> language, though I'd like to use something more Lisp-like. Maybe the tools 
> are just too difficult for me at the moment, though I'll persevere for a 
> bit. I'd like to achieve some simple graphics on an Android device at 
> least. I've come across some tutorials for CLojure and jMonkey and I'm 
> wondering to dive into that, though I'm still unsure whether OpenGL is the 
> way to go for simple 2D stuff...
>

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




Re: Library naming etiquette?

2013-02-14 Thread Jim Klucar
Thanks for the replies. I'm not the owner of what the official namespace 
should be, so perhaps I'll just clj-xxx and I can always stop using that 
and change with a major release milestone. Clearly too much thought has 
gone into this already, and there doesn't appear to be a problem with 
people using clj-xxx on their own.

On Tuesday, February 12, 2013 7:51:44 PM UTC-5, Jim Klucar wrote:
>
> I have a library that I'm getting ready to push to github / clojars and 
> had a question about the naming of it. During development I called it 
> clojure-xxx, where xxx is the application it interacts with. This is mostly 
> because I didn't want to think of something clever. At any rate I'd like to 
> know if that naming convention would be frowned upon because it isn't 
> coming from the official clojure dev group.
>
> Thanks,
> Jim
>
>

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




Re: Help on implementing a simple java (openNLP) EventStream interface

2013-02-14 Thread Joachim De Beule
Thanks for the tip Max, so you mean like this?

(defn cases->event-stream [cases features-extractor labeler]
  (let [remaining (atom cases)]
(reify opennlp.model.EventStream
  (next [this] (let [current (first @remaining)]
 (swap! remaining rest)
 (case->event current features-extractor labeler)))
  (hasNext [this] (not (empty? @remaining))

May I ask why that would be faster? And when proxy is preferred over reify?

Joachim.

2013/2/14 Max Penet 

>
> Also It looks like you could use reify instead of proxy here, it would
> improve performance.
>
> http://clojuredocs.org/clojure_core/clojure.core/reify
>
> - Max
>
>
> On Thursday, February 14, 2013 3:26:02 PM UTC+1, Ulises wrote:
>
>> Without testing or anything that looks reasonable enough. I'm sure that
>> there are plenty caveats around infinite seqs, etc. though.
>>
>>
>> On 14 February 2013 14:22, Joachim De Beule wrote:
>>
>>> Thanks! So you mean like this (assuming some function elt->event):
>>>
>>> (defn seq->event-stream [input-seq]
>>>   (let [remaining (atom input-seq)]
>>> (proxy [EventStream] []
>>>   (next [] (let [current (first @remaining)]
>>> (swap! remaining rest)
>>> (elt->event current)))
>>>   (hasNext [] (not (empty? @remaining))
>>>
>>>
>>>
>>> 2013/2/14 Ulises 
>>>
 How about having your methods access an atom provided in a closure like
 it's done here: http://kotka.de/blog/**2010/03/proxy_gen-class_**
 little_brother.html

 U


 On 14 February 2013 13:58, Joachim De Beule wrote:

> Hi All,
>
> I want to turn a clojure sequence into an 'EventStream' java interface
> in clojure (see http://opennlp.apache.**org/documentation/1.5.2-**
> incubating/apidocs/opennlp-**maxent/index.html).
> Basically this is an object that implements next() and hasNext() methods.
>
> I know this can be done with proxy:
>
> (proxy [EventStream] []
>(hasNext [] ...)
>(next [] (Event. ...) ...))
>
> What I am not sure about is how to deal with state. More precisely,
> the object returned by the above call to proxy obviously must somehow keep
> a pointer to the current position in the input sequence and increment the
> index after a call to next() etc.
>
> Any ideas on how to best do something like this?
>
> Thanks a lot!
> Joachim.
>
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
>
> Note that posts from new members are moderated - please be patient
> with your first post.
> To unsubscribe from this group, send email to
> clojure+u...@**googlegroups.com
>
> For more options, visit this group at
> http://groups.google.com/**group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to clojure+u...@**googlegroups.com.
>
> For more options, visit 
> https://groups.google.com/**groups/opt_out
> .
>
>
>

  --
 --
 You received this message because you are subscribed to the Google
 Groups "Clojure" group.
 To post to this group, send email to clo...@googlegroups.com

 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@**googlegroups.com

 For more options, visit this group at
 http://groups.google.com/**group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google
 Groups "Clojure" group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to clojure+u...@**googlegroups.com.

 For more options, visit 
 https://groups.google.com/**groups/opt_out
 .



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

Re: proper way to override clojure.core functions without getting warning/error

2013-02-14 Thread AtKaaZ
Thank you for replying.

I see that using :require like (:require [random.learning.clojure.overridex
:as o])
also means I have to use sorted? as  "o/sorted?" else the
clojure.core/sorted? is used
or using (:require [random.learning.clojure.overridex])  means I've to use
"random.learning.clojure.overridex/sorted?".
This is actually something I was trying to avoid. I mean, I still want to
use just "sorted?" and simply by somehow including another namespace
(require/use/refer whichever way) in my namespace declaration then the
implementation of "sorted?" would be different as dictated by this included
namespace (supposed I could switch between the two, or even just not
include any and have it be clojure.core variant of "sorted?")

What I forgot to mention is that I've tried the (:refer-clojure :exclude
[sorted?]) variant in the new namespace but I was still unable to get rid
of the errors. But maybe this is now just a ccw bug and this is indeed the
right way for me to do thing if I really wanted the behavior that I
mentioned.

(ns random.learning.clojure.usetheoverridexns
  (:refer-clojure :exclude [sorted?])
  (:use random.learning.clojure.overridex)
  (:refer-clojure :exclude [sorted?])
  )

(and
  (= false (sorted? '(1 2)))
  (= true (sorted? (sorted-set 1 2


First time loading this in a new repl yields:
;; Clojure 1.5.0-RC16
;; Switching to random.learning.clojure.usetheoverridexns namespace
true
IllegalStateException sorted? already refers to:
#'random.learning.clojure.overridex/sorted? in namespace:
random.learning.clojure.usetheoverridexns
clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)

it's not too bad, and any successive loads just show true

The only thing is that if I switch to another namespace while repl is
running I can't ever switch back due to the error:
;; Switching to random.learning.clojure.overridex namespace
nil
=> *ns*
#
;; Switching to random.learning.clojure.usetheoverridexns namespace
IllegalStateException sorted? already refers to:
#'random.learning.clojure.overridex/sorted? in namespace:
random.learning.clojure.usetheoverridexns
clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)
=> *ns*
#

I've already reported the ccw issue here:
https://code.google.com/p/counterclockwise/issues/detail?id=528&sort=-id

So, I'll keep using this variant (:refer-clojure :exclude [sorted?])  for
now,

thank you Anthony.

Btw, is there a way to not implicitly include clojure.core or to have it
aliased :as cc for example so that I would have to always cc/sorted? if I
wanted to use clojure.core  and any others from it ?
 Even if this were possible, I wouldn't be able to just plug in a different
implementation of "sorted?" and easily choose between the: namespace1,
namespace2 and clojure.core  's implementation of "sorted?" because I would
have to at least change from cc/sorted? to nsany/sorted? where depending on
which namespace I import they can be aliased ":as nsany" but clojure.core
would always be a different alias ":as cc".

thx


On Thu, Feb 14, 2013 at 7:52 PM, Anthony Grimes wrote:

> The problem is that your first namespace defines 'sorted?' and your second
> namespace just uses the namespace, thus overriding 'sorted?'. You have two
> options here. Your biggest project is that you're using ':use'. Use
> ':require' instead. Something like `(:require 
> [random.learning.clojure.**overridex
> :as overridex])`. Your second option is to do the :refer-clojure dance in
> this namespace as well, but really you should just use :require and qualify
> the namespace.
>
> On Thursday, February 14, 2013 10:04:55 AM UTC-8, AtKaaZ wrote:
>>
>> Let's say I want to override clojure.core/sorted?
>>
>> (ns random.learning.clojure.**overridex
>>   (:refer-clojure :exclude [sorted?]))
>>
>> (defn sorted? [coll]
>>   {:pre [ (coll? coll)]}
>>   (clojure.core/sorted? coll))
>>
>> I'm using Eclipse+counterclockwise, so loading this namespace(Ctrl+Alt+L)
>> first time gives no warnings/errors, loading it second time, one warning
>> and no errors, and subsequent times it's loaded there are no
>> errors/warnings.
>>
>> the warning is this:
>> WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace:
>> random.learning.clojure.**overridex, being replaced by:
>> #'random.learning.clojure.**overridex/sorted?
>>
>> I could ignore the warning, no problem, but then I try to use this
>> namespace in another namespace:
>>
>> (ns random.learning.clojure.**usetheoverridexns
>>   (:use random.learning.clojure.**overridex)
>>   )
>>
>> (and
>>   (= false (sorted? '(1 2)))
>>   (= true (sorted? (sorted-set 1 2
>>
>>
>> When I load this namespace first time I get:
>> WARNING: sorted? already refers to: #'clojure.core/sorted? in namespace:
>> random.learning.clojure.**usetheoverridexns, being replaced by:
>> #'random.learning.clojure.**overridex/sorted?
>> true
>> I could ignore that, but then I load it again(and any subsequent time)
>> and this is an error (not just a warning that can b

Re: Clojure, Heroku and the dreaded R10 Boot Timeout Error

2013-02-14 Thread Phil Hagelberg

Leonardo Borges writes:

> Could it be related to new relic? That's the only external service -
> besides downloading jars - that the app tries to reach upon starting
> up.

If your app is downloading jars on startup that's a bad sign; all your
dependencies should be downloaded during git push. If you can track down
what's causing this then it should take care of your boot timeouts. If
you're having trouble determining where it's coming from feel free to
email me directly with your app name and I can help.

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




Re: Why is this so difficult?

2013-02-14 Thread BJG145
What I find exasperating about Leinigen is that I've got a degree in 
computer science, decades of experience in IT support, and I still haven't 
been able to get it working yet. :-( 

Package Manager? Curl? What?

OK, look, I'm not very bright. It took me years to get my head round OOP 
because all the books and examples were so dull. I like this Gideros thing 
I've discovered because it lets me throw together interesting programs with 
sound and graphics like I used to do on my BBC Micro when I was a kid. I 
feel I could release a Kindle app if I set my mind to it. I'd like to feel 
the same about Clojure, but I'm struggling. I read that functional 
programming is the future; it's fun; it's expressive; but to do anything 
interesting with it it seems you have to be a professional programmer. I 
can't imagine any teenagers releasing hit apps with it like they do with 
Corona. I'm exasperated that I can't find a nice Windows-based environment 
and a set of comprehensible graphics functions. Oh, just ignore me, I'm 
just having a rant. ;-)

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




Re: Why is this so difficult?

2013-02-14 Thread Lee Spector

I think I have an idea of where your coming from. Leiningen does lots of 
wonderful and important things but coming from the outside (or at least from 
certain "outsides") it's not even clear why you'd want to do a lot of those 
things, and it doesn't do some of the things that seem most essential to really 
getting started (like provide a way to edit code). 

I'm glad you've found IntelliJ IDEA to be helpful but FWIW I think that the 
best way to get started for many outsiders may instead be Clooj, which lets you 
edit and run code without knowing anything about Java or package managers or 
anything else -- you can just download and double click one thing and then 
start typing pure Clojure code in an environment that has minimal but essential 
features like bracket matching and auto-indentation.

Clooj is listed on one of the "getting started" pages out there, but I know 
that its author could use help keeping it up to date and improving it.

 -Lee


On Feb 14, 2013, at 2:32 PM, BJG145 wrote:

> What I find exasperating about Leinigen is that I've got a degree in computer 
> science, decades of experience in IT support, and I still haven't been able 
> to get it working yet. :-( 
> 
> Package Manager? Curl? What?
> 
> OK, look, I'm not very bright. It took me years to get my head round OOP 
> because all the books and examples were so dull. I like this Gideros thing 
> I've discovered because it lets me throw together interesting programs with 
> sound and graphics like I used to do on my BBC Micro when I was a kid. I feel 
> I could release a Kindle app if I set my mind to it. I'd like to feel the 
> same about Clojure, but I'm struggling. I read that functional programming is 
> the future; it's fun; it's expressive; but to do anything interesting with it 
> it seems you have to be a professional programmer. I can't imagine any 
> teenagers releasing hit apps with it like they do with Corona. I'm 
> exasperated that I can't find a nice Windows-based environment and a set of 
> comprehensible graphics functions. Oh, just ignore me, I'm just having a 
> rant. ;-)

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




protocol implementation delegating to protocol extension doesn't compile

2013-02-14 Thread Jim - FooBar();

let me explain with an example:


;;in some namespace x

(defprotocol IStemmable
(stem [this token] [this token lang])
(getRoot [this token dictionary]))

(defprotocol IDistance
(getDistance [this s1 s2] [this s1 s2 m-weight]))

;;in some namespace y that refers all vars from x

(extend-type String
 IStemmable
 (stem
  ([this] (stem this "english"))
  ([this lang]
 (let [stemmer (help/porter-stemmer lang)]
(doto stemmer
(.setCurrent this)
(.stem))
  (.getCurrent stemmer
 (getRoot [this _ dic] (get dic this "NOT-FOUND!"))
 IDistance
 (getDistance
   ([this other]
  (help/levenshtein-distance* this other)) ;;delegate to helper fn
   ([this other mismatch-weight]
  (help/levenshtein-distance* this other mismatch-weight ;;same 
here



(defrecord PorterStemmer [lang input output] ;;COMPILES AND WORKS FINE - 
NO PROBLEMS

IStemmable
(stem [_ token]
  (stem token lang))   ;;delegate to String for this
(getRoot [_ token dic]
  (getRoot token _ dic ;;delegate to String for this


(defrecord LevenshteinDistance []  ;;DOESN'T COMPILE
IDistance
(getDistance [_ s1 s2]
  (getDistance s1 s2))  ;;delegate to String for this
(getDistance [_ s1 s2 weight]
  (getDistance s1 s2 weight)))  ;;and this


trying to load the file results in:

CompilerException java.lang.IllegalArgumentException: No single method: 
getDistance of interface: cluja.protocols.IDistance found for function: 
getDistance of protocol: IDistance, 
compiling:(/media/sorted/uni_stick/cluja/src/cluja/concretions/models.clj:152:3) 



What am I doing wrong? I am practically doing the exact same thing for 
these 2 protocols. Both of them delegate to the implementations extended 
to string. I keep looking at the code and I see nothing wrong! The 
'getDistance' with 3 args delegates to the one with 2 and the one with 4 
delegates to the one with 3 (from String)...even more confusingly why 
one works and the other complains? any ideas/insights?


Jim

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

To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Why is this so difficult?

2013-02-14 Thread Alex Walker
The easiest, when anything becomes a road block, is simply tryclj.comcombined 
with 
4clojure.com.

Those two alone can give you enough to work with and chew on while you 
become more familiar with clojure and setup a proper environment (including 
Leiningen).

Another simplification is to use 
lein-oneoff, 
once you have Leiningen installed, so that you can delay understanding how 
projects are structured and ran when typing "lein new". 

On Thursday, February 14, 2013 1:51:06 PM UTC-6, Lee wrote:
>
>
> I think I have an idea of where your coming from. Leiningen does lots of 
> wonderful and important things but coming from the outside (or at least 
> from certain "outsides") it's not even clear why you'd want to do a lot of 
> those things, and it doesn't do some of the things that seem most essential 
> to really getting started (like provide a way to edit code). 
>
> I'm glad you've found IntelliJ IDEA to be helpful but FWIW I think that 
> the best way to get started for many outsiders may instead be Clooj, which 
> lets you edit and run code without knowing anything about Java or package 
> managers or anything else -- you can just download and double click one 
> thing and then start typing pure Clojure code in an environment that has 
> minimal but essential features like bracket matching and auto-indentation. 
>
> Clooj is listed on one of the "getting started" pages out there, but I 
> know that its author could use help keeping it up to date and improving it. 
>
>  -Lee 
>
>
> On Feb 14, 2013, at 2:32 PM, BJG145 wrote: 
>
> > What I find exasperating about Leinigen is that I've got a degree in 
> computer science, decades of experience in IT support, and I still haven't 
> been able to get it working yet. :-( 
> > 
> > Package Manager? Curl? What? 
> > 
> > OK, look, I'm not very bright. It took me years to get my head round OOP 
> because all the books and examples were so dull. I like this Gideros thing 
> I've discovered because it lets me throw together interesting programs with 
> sound and graphics like I used to do on my BBC Micro when I was a kid. I 
> feel I could release a Kindle app if I set my mind to it. I'd like to feel 
> the same about Clojure, but I'm struggling. I read that functional 
> programming is the future; it's fun; it's expressive; but to do anything 
> interesting with it it seems you have to be a professional programmer. I 
> can't imagine any teenagers releasing hit apps with it like they do with 
> Corona. I'm exasperated that I can't find a nice Windows-based environment 
> and a set of comprehensible graphics functions. Oh, just ignore me, I'm 
> just having a rant. ;-) 
>
>

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




new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
The goal is to can write this form:
=> *(let [a java.lang.RuntimeException]
 (new a)
 )*
CompilerException java.lang.IllegalArgumentException: Unable to resolve
classname: a, compiling:(NO_SOURCE_PATH:2:3)

attempt with macro:
=>* (defmacro mew [cls & restt]
 `(new ~(eval cls) ~@restt)
 )*
#'runtime.q/mew
=> *(let [a java.lang.RuntimeException]
 (mew a)
 )*
CompilerException java.lang.UnsupportedOperationException: Can't eval
locals, compiling:(NO_SOURCE_PATH:2:3)

attempt with function:
=> *(defn mew [cls & restt]
 (new cls)
 )*
CompilerException java.lang.IllegalArgumentException: Unable to resolve
classname: cls, compiling:(NO_SOURCE_PATH:2:3)

attempt with a macro inside the function:
=> *(defn mew [cls & restt]
 (mew cls)
 )*
CompilerException java.lang.UnsupportedOperationException: Can't eval
locals, compiling:(NO_SOURCE_PATH:2:3)

Ok, i give up, how? impossible ?

-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Why is this so difficult?

2013-02-14 Thread BJG145
Thanks for the suggestions - this really isn't an anti-Leiningen thread, 
I'm just impatient that I don't understand it yet. But I'll give it another 
crack and post some more coherent queries when I get stuck...:-)
 

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




[GSoC Idea] cljs layer/dsl over express js

2013-02-14 Thread Omer Iqbal
Just throwing ideas. Feel free to shoot it down if you folks think its not
worth it :).
Also, I'm a student, and would actually be participating in GSOC, so this
is more of a shoutout for possible mentors, if you guys think the project
makes sense.

The Problem:
1. cljs doesn't yet have a library/framework of its own to facilitate
serverside web dev over nodejs. (I might be wrong here, and please correct
me if I am).
2. Expressjs(http://expressjs.com/) is an awesome sinatra inspired, very
popular, web app framework for node.
3. Using express directly using js interop calls can get ugly
QED: It would make sense to have a cljs layer over express

The Solution:
I haven't ironed this out fully, but it would probably be a good idea to
produce a compojure like framework, so its easier to adopt. Under the hood
you'll obviously have either interop calls, or cljs implementations for the
same functionality.

Would love feedback on the idea! And whether can haz mentor?

Cheers,
Omer
(@olenhad)

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




Re: new, macros and "Can't eval locals"

2013-02-14 Thread Andy Fingerhut

On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:

> The goal is to can write this form:
> => (let [a java.lang.RuntimeException]
>  (new a)
>  )
> CompilerException java.lang.IllegalArgumentException: Unable to resolve 
> classname: a, compiling:(NO_SOURCE_PATH:2:3) 
> 
> attempt with macro:
> => (defmacro mew [cls & restt]
>  `(new ~(eval cls) ~@restt)
>  )
> #'runtime.q/mew

This is probably your closest attempt.  Try this variation on the above:

(defmacro mew [cls & args]
  `(new ~cls ~@args))

user=> (macroexpand-1 '(mew java.lang.RuntimeException))
(new java.lang.RuntimeException)

Andy

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




Re: new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
thanks for the reply,

=> *(defmacro mew [cls & args]
 `(new ~cls ~@args))*
#'runtime.q/mew
=>* (let [a java.lang.RuntimeException]
 (mew a)
 )*
CompilerException java.lang.IllegalArgumentException: Unable to resolve
classname: a, compiling:(NO_SOURCE_PATH:2:3)

that would be the equivalent macro of what *new* is doing
it's like
*(new a)*
CompilerException java.lang.IllegalArgumentException: Unable to resolve
classname: a, compiling:(NO_SOURCE_PATH:2:3)


This is the goal:
The goal is to can write this form:
=>  *(let [a java.lang.RuntimeException]
 (new a))*

but I think it's impossible, at least by using "new" it is


On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut
wrote:

>
> On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:
>
> The goal is to can write this form:
> => *(let [a java.lang.RuntimeException]
>  (new a)
>  )*
> CompilerException java.lang.IllegalArgumentException: Unable to resolve
> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>
> attempt with macro:
> =>* (defmacro mew [cls & restt]
>  `(new ~(eval cls) ~@restt)
>  )*
> #'runtime.q/mew
>
>
> This is probably your closest attempt.  Try this variation on the above:
>
> (defmacro mew [cls & args]
>   `(new ~cls ~@args))
>
> user=> (macroexpand-1 '(mew java.lang.RuntimeException))
> (new java.lang.RuntimeException)
>
> Andy
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
I figure since new is expecting a class at compiletime, we can never pass
it a class that we evaluate at runtime(those locals), ergo => impossible to
macro around "new" like that

like this => impossible:
*(let [a java.lang.RuntimeException]
 (macro-that-eventually-calls-new a))*

maybe someone could suggest another way? clojure.reflect ?



On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ  wrote:

> thanks for the reply,
>
> => *(defmacro mew [cls & args]
>  `(new ~cls ~@args))*
> #'runtime.q/mew
> =>* (let [a java.lang.RuntimeException]
>  (mew a)
>  )*
>
> CompilerException java.lang.IllegalArgumentException: Unable to resolve
> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>
> that would be the equivalent macro of what *new* is doing
> it's like
> *(new a)*
> CompilerException java.lang.IllegalArgumentException: Unable to resolve
> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>
>
> This is the goal:
>
> The goal is to can write this form:
> =>  *(let [a java.lang.RuntimeException]
>  (new a))*
>
> but I think it's impossible, at least by using "new" it is
>
>
> On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut  > wrote:
>
>>
>> On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:
>>
>> The goal is to can write this form:
>> => *(let [a java.lang.RuntimeException]
>>  (new a)
>>  )*
>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>
>> attempt with macro:
>> =>* (defmacro mew [cls & restt]
>>  `(new ~(eval cls) ~@restt)
>>  )*
>> #'runtime.q/mew
>>
>>
>> This is probably your closest attempt.  Try this variation on the above:
>>
>> (defmacro mew [cls & args]
>>   `(new ~cls ~@args))
>>
>> user=> (macroexpand-1 '(mew java.lang.RuntimeException))
>> (new java.lang.RuntimeException)
>>
>> Andy
>>
>>  --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
>
> --
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate it.
>
>


-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
ok looks like it's not impossible:
=> *(defmacro mew [cls & restt]
 (let [c a]
   `(eval (new ~a ~@restt))
   )
 )*
#'runtime.q/mew
=> *(let [a java.lang.RuntimeException]
 (mew a)
 )*
#



On Thu, Feb 14, 2013 at 10:53 PM, AtKaaZ  wrote:

> I figure since new is expecting a class at compiletime, we can never pass
> it a class that we evaluate at runtime(those locals), ergo => impossible to
> macro around "new" like that
>
> like this => impossible:
> *(let [a java.lang.RuntimeException]
>  (macro-that-eventually-calls-new a))*
>
> maybe someone could suggest another way? clojure.reflect ?
>
>
>
> On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ  wrote:
>
>> thanks for the reply,
>>
>> => *(defmacro mew [cls & args]
>>  `(new ~cls ~@args))*
>> #'runtime.q/mew
>> =>* (let [a java.lang.RuntimeException]
>>  (mew a)
>>  )*
>>
>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>
>> that would be the equivalent macro of what *new* is doing
>> it's like
>> *(new a)*
>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>
>>
>> This is the goal:
>>
>> The goal is to can write this form:
>> =>  *(let [a java.lang.RuntimeException]
>>  (new a))*
>>
>> but I think it's impossible, at least by using "new" it is
>>
>>
>> On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut <
>> andy.finger...@gmail.com> wrote:
>>
>>>
>>> On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:
>>>
>>> The goal is to can write this form:
>>> => *(let [a java.lang.RuntimeException]
>>>  (new a)
>>>  )*
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>>
>>> attempt with macro:
>>> =>* (defmacro mew [cls & restt]
>>>  `(new ~(eval cls) ~@restt)
>>>  )*
>>> #'runtime.q/mew
>>>
>>>
>>> This is probably your closest attempt.  Try this variation on the above:
>>>
>>> (defmacro mew [cls & args]
>>>   `(new ~cls ~@args))
>>>
>>> user=> (macroexpand-1 '(mew java.lang.RuntimeException))
>>> (new java.lang.RuntimeException)
>>>
>>> Andy
>>>
>>>  --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>
>>
>> --
>> Please correct me if I'm wrong or incomplete,
>> even if you think I'll subconsciously hate it.
>>
>>
>
>
> --
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate it.
>
>


-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
ah I tricked myself... I used "~a"  inside the macro instead of "~c" or
"~cls"
so back to still impossible

=> (defmacro mew [cls & restt]
 (let [c cls]
   `(eval (new ~c ~@restt))
   )
 )
#'runtime.q/mew
=> (let [a java.lang.RuntimeException]
 (mew a)
 )
CompilerException java.lang.IllegalArgumentException: Unable to resolve
classname: a, compiling:(NO_SOURCE_PATH:2:3)
=> (defmacro mew [cls & restt]
 `(eval (new ~cls ~@restt))
 )
#'runtime.q/mew
=> (let [a java.lang.RuntimeException]
 (mew a)
 )
CompilerException java.lang.IllegalArgumentException: Unable to resolve
classname: a, compiling:(NO_SOURCE_PATH:2:3)


On Thu, Feb 14, 2013 at 10:58 PM, AtKaaZ  wrote:

> ok looks like it's not impossible:
> => *(defmacro mew [cls & restt]
>  (let [c a]
>`(eval (new ~a ~@restt))
>)
>  )*
>
> #'runtime.q/mew
> => *(let [a java.lang.RuntimeException]
>  (mew a)
>  )*
> #
>
>
>
> On Thu, Feb 14, 2013 at 10:53 PM, AtKaaZ  wrote:
>
>> I figure since new is expecting a class at compiletime, we can never pass
>> it a class that we evaluate at runtime(those locals), ergo => impossible to
>> macro around "new" like that
>>
>> like this => impossible:
>> *(let [a java.lang.RuntimeException]
>>  (macro-that-eventually-calls-new a))*
>>
>> maybe someone could suggest another way? clojure.reflect ?
>>
>>
>>
>> On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ  wrote:
>>
>>> thanks for the reply,
>>>
>>> => *(defmacro mew [cls & args]
>>>  `(new ~cls ~@args))*
>>> #'runtime.q/mew
>>> =>* (let [a java.lang.RuntimeException]
>>>  (mew a)
>>>  )*
>>>
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>>
>>> that would be the equivalent macro of what *new* is doing
>>> it's like
>>> *(new a)*
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>>
>>>
>>> This is the goal:
>>>
>>> The goal is to can write this form:
>>> =>  *(let [a java.lang.RuntimeException]
>>>  (new a))*
>>>
>>> but I think it's impossible, at least by using "new" it is
>>>
>>>
>>> On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut <
>>> andy.finger...@gmail.com> wrote:
>>>

 On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:

 The goal is to can write this form:
 => *(let [a java.lang.RuntimeException]
  (new a)
  )*
 CompilerException java.lang.IllegalArgumentException: Unable to resolve
 classname: a, compiling:(NO_SOURCE_PATH:2:3)

 attempt with macro:
 =>* (defmacro mew [cls & restt]
  `(new ~(eval cls) ~@restt)
  )*
 #'runtime.q/mew


 This is probably your closest attempt.  Try this variation on the above:

 (defmacro mew [cls & args]
   `(new ~cls ~@args))

 user=> (macroexpand-1 '(mew java.lang.RuntimeException))
 (new java.lang.RuntimeException)

 Andy

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



>>>
>>>
>>>
>>> --
>>> Please correct me if I'm wrong or incomplete,
>>> even if you think I'll subconsciously hate it.
>>>
>>>
>>
>>
>> --
>> Please correct me if I'm wrong or incomplete,
>> even if you think I'll subconsciously hate it.
>>
>>
>
>
> --
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate it.
>
>


-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
and I forgot to mention that I already had another "a" defined
=> a
java.lang.RuntimeException

hence why it worked


On Thu, Feb 14, 2013 at 11:01 PM, AtKaaZ  wrote:

> ah I tricked myself... I used "~a"  inside the macro instead of "~c" or
> "~cls"
> so back to still impossible
>
> => (defmacro mew [cls & restt]
>  (let [c cls]
>`(eval (new ~c ~@restt))
>
>)
>  )
> #'runtime.q/mew
> => (let [a java.lang.RuntimeException]
>  (mew a)
>  )
> CompilerException java.lang.IllegalArgumentException: Unable to resolve
> classname: a, compiling:(NO_SOURCE_PATH:2:3)
> => (defmacro mew [cls & restt]
>  `(eval (new ~cls ~@restt))
>
>  )
> #'runtime.q/mew
> => (let [a java.lang.RuntimeException]
>  (mew a)
>  )
> CompilerException java.lang.IllegalArgumentException: Unable to resolve
> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>
>
> On Thu, Feb 14, 2013 at 10:58 PM, AtKaaZ  wrote:
>
>> ok looks like it's not impossible:
>> => *(defmacro mew [cls & restt]
>>  (let [c a]
>>`(eval (new ~a ~@restt))
>>)
>>  )*
>>
>> #'runtime.q/mew
>> => *(let [a java.lang.RuntimeException]
>>  (mew a)
>>  )*
>> #
>>
>>
>>
>> On Thu, Feb 14, 2013 at 10:53 PM, AtKaaZ  wrote:
>>
>>> I figure since new is expecting a class at compiletime, we can never
>>> pass it a class that we evaluate at runtime(those locals), ergo =>
>>> impossible to macro around "new" like that
>>>
>>> like this => impossible:
>>> *(let [a java.lang.RuntimeException]
>>>  (macro-that-eventually-calls-new a))*
>>>
>>> maybe someone could suggest another way? clojure.reflect ?
>>>
>>>
>>>
>>> On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ  wrote:
>>>
 thanks for the reply,

 => *(defmacro mew [cls & args]
  `(new ~cls ~@args))*
 #'runtime.q/mew
 =>* (let [a java.lang.RuntimeException]
  (mew a)
  )*

 CompilerException java.lang.IllegalArgumentException: Unable to resolve
 classname: a, compiling:(NO_SOURCE_PATH:2:3)

 that would be the equivalent macro of what *new* is doing
 it's like
 *(new a)*
 CompilerException java.lang.IllegalArgumentException: Unable to resolve
 classname: a, compiling:(NO_SOURCE_PATH:2:3)


 This is the goal:

 The goal is to can write this form:
 =>  *(let [a java.lang.RuntimeException]
  (new a))*

 but I think it's impossible, at least by using "new" it is


 On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut <
 andy.finger...@gmail.com> wrote:

>
> On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:
>
> The goal is to can write this form:
> => *(let [a java.lang.RuntimeException]
>  (new a)
>  )*
> CompilerException java.lang.IllegalArgumentException: Unable to
> resolve classname: a, compiling:(NO_SOURCE_PATH:2:3)
>
> attempt with macro:
> =>* (defmacro mew [cls & restt]
>  `(new ~(eval cls) ~@restt)
>  )*
> #'runtime.q/mew
>
>
> This is probably your closest attempt.  Try this variation on the
> above:
>
> (defmacro mew [cls & args]
>   `(new ~cls ~@args))
>
> user=> (macroexpand-1 '(mew java.lang.RuntimeException))
> (new java.lang.RuntimeException)
>
> Andy
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient
> with your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



 --
 Please correct me if I'm wrong or incomplete,
 even if you think I'll subconsciously hate it.


>>>
>>>
>>> --
>>> Please correct me if I'm wrong or incomplete,
>>> even if you think I'll subconsciously hate it.
>>>
>>>
>>
>>
>> --
>> Please correct me if I'm wrong or incomplete,
>> even if you think I'll subconsciously hate it.
>>
>>
>
>
> --
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate it.
>
>


-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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 f

Re: new, macros and "Can't eval locals"

2013-02-14 Thread Aaron Cohen
Yes, since this is runtime you should use reflection.

(let [a java.lang.RuntimeException]
   (.newInstance a))

Alternatively, you can use eval:

(let [a java.lang.RuntimeException]
  (eval (list 'new a)))


On Thu, Feb 14, 2013 at 4:53 PM, AtKaaZ  wrote:

> I figure since new is expecting a class at compiletime, we can never pass
> it a class that we evaluate at runtime(those locals), ergo => impossible to
> macro around "new" like that
>
> like this => impossible:
> *(let [a java.lang.RuntimeException]
>  (macro-that-eventually-calls-new a))*
>
> maybe someone could suggest another way? clojure.reflect ?
>
>
>
> On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ  wrote:
>
>> thanks for the reply,
>>
>> => *(defmacro mew [cls & args]
>>  `(new ~cls ~@args))*
>> #'runtime.q/mew
>> =>* (let [a java.lang.RuntimeException]
>>  (mew a)
>>  )*
>>
>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>
>> that would be the equivalent macro of what *new* is doing
>> it's like
>> *(new a)*
>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>
>>
>> This is the goal:
>>
>> The goal is to can write this form:
>> =>  *(let [a java.lang.RuntimeException]
>>  (new a))*
>>
>> but I think it's impossible, at least by using "new" it is
>>
>>
>> On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut <
>> andy.finger...@gmail.com> wrote:
>>
>>>
>>> On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:
>>>
>>> The goal is to can write this form:
>>> => *(let [a java.lang.RuntimeException]
>>>  (new a)
>>>  )*
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>>
>>> attempt with macro:
>>> =>* (defmacro mew [cls & restt]
>>>  `(new ~(eval cls) ~@restt)
>>>  )*
>>> #'runtime.q/mew
>>>
>>>
>>> This is probably your closest attempt.  Try this variation on the above:
>>>
>>> (defmacro mew [cls & args]
>>>   `(new ~cls ~@args))
>>>
>>> user=> (macroexpand-1 '(mew java.lang.RuntimeException))
>>> (new java.lang.RuntimeException)
>>>
>>> Andy
>>>
>>>  --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>
>>
>> --
>> Please correct me if I'm wrong or incomplete,
>> even if you think I'll subconsciously hate it.
>>
>>
>
>
> --
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: new, macros and "Can't eval locals"

2013-02-14 Thread AtKaaZ
Thank you! I didn't know you could do .newInstance

oh that's a nice trick with eval and list 'new

So it's not impossible after all, thanks Aaron!
Here's what I got from what you said:
=> *(defmacro mew [cls & restt]
   `(eval (list 'new ~cls ~@restt))
 )*
#'runtime.q/mew
=> *(let [a java.lang.RuntimeException]
   (mew a)
 )*
#

it makes sense now, using eval at runtime not at compile time as I was
trying

and also the newInstance variant:
=> *(defmacro mew [cls & restt]
   `(.newInstance ~cls ~@restt)
 )*
#'runtime.q/mew
=> *(let [a java.lang.RuntimeException]
   (mew a)
 )*
#


Really, thank you Aaron,


On Thu, Feb 14, 2013 at 11:02 PM, Aaron Cohen  wrote:

> Yes, since this is runtime you should use reflection.
>
> (let [a java.lang.RuntimeException]
>(.newInstance a))
>
> Alternatively, you can use eval:
>
> (let [a java.lang.RuntimeException]
>   (eval (list 'new a)))
>
>
> On Thu, Feb 14, 2013 at 4:53 PM, AtKaaZ  wrote:
>
>> I figure since new is expecting a class at compiletime, we can never pass
>> it a class that we evaluate at runtime(those locals), ergo => impossible to
>> macro around "new" like that
>>
>> like this => impossible:
>> *(let [a java.lang.RuntimeException]
>>  (macro-that-eventually-calls-new a))*
>>
>> maybe someone could suggest another way? clojure.reflect ?
>>
>>
>>
>> On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ  wrote:
>>
>>> thanks for the reply,
>>>
>>> => *(defmacro mew [cls & args]
>>>  `(new ~cls ~@args))*
>>> #'runtime.q/mew
>>> =>* (let [a java.lang.RuntimeException]
>>>  (mew a)
>>>  )*
>>>
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>>
>>> that would be the equivalent macro of what *new* is doing
>>> it's like
>>> *(new a)*
>>> CompilerException java.lang.IllegalArgumentException: Unable to resolve
>>> classname: a, compiling:(NO_SOURCE_PATH:2:3)
>>>
>>>
>>> This is the goal:
>>>
>>> The goal is to can write this form:
>>> =>  *(let [a java.lang.RuntimeException]
>>>  (new a))*
>>>
>>> but I think it's impossible, at least by using "new" it is
>>>
>>>
>>> On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut <
>>> andy.finger...@gmail.com> wrote:
>>>

 On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote:

 The goal is to can write this form:
 => *(let [a java.lang.RuntimeException]
  (new a)
  )*
 CompilerException java.lang.IllegalArgumentException: Unable to resolve
 classname: a, compiling:(NO_SOURCE_PATH:2:3)

 attempt with macro:
 =>* (defmacro mew [cls & restt]
  `(new ~(eval cls) ~@restt)
  )*
 #'runtime.q/mew


 This is probably your closest attempt.  Try this variation on the above:

 (defmacro mew [cls & args]
   `(new ~cls ~@args))

 user=> (macroexpand-1 '(mew java.lang.RuntimeException))
 (new java.lang.RuntimeException)

 Andy

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



>>>
>>>
>>>
>>> --
>>> Please correct me if I'm wrong or incomplete,
>>> even if you think I'll subconsciously hate it.
>>>
>>>
>>
>>
>> --
>> Please correct me if I'm wrong or incomplete,
>> even if you think I'll subconsciously hate 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
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> --
> 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 moderate

Re: Why is this so difficult?

2013-02-14 Thread Josh Kamau
This might help:

   1. create a new project in the current directory "lein new"
   2. Edit project.clj and add this plugin  [lein-idea: "1.0.1"]
   3. run this to create idea project files   "lein idea"
   4. Open the project in intellij

Josh


On Fri, Feb 15, 2013 at 12:29 AM, BJG145  wrote:

> Thanks for the suggestions - this really isn't an anti-Leiningen thread,
> I'm just impatient that I don't understand it yet. But I'll give it another
> crack and post some more coherent queries when I get stuck...:-)
>
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: [GSoC Idea] cljs layer/dsl over express js

2013-02-14 Thread Josh Kamau
Clojure has compojure ... which is a sinatra like web framework  and
you can create a new project using"lein new compojure"   and start
creating your request handler functions from there ... Just like in
express.  If you want a jade equivalent... you can use hiccup .

Josh.


On Fri, Feb 15, 2013 at 12:30 AM, Omer Iqbal  wrote:

> Just throwing ideas. Feel free to shoot it down if you folks think its not
> worth it :).
> Also, I'm a student, and would actually be participating in GSOC, so this
> is more of a shoutout for possible mentors, if you guys think the project
> makes sense.
>
> The Problem:
> 1. cljs doesn't yet have a library/framework of its own to facilitate
> serverside web dev over nodejs. (I might be wrong here, and please correct
> me if I am).
> 2. Expressjs(http://expressjs.com/) is an awesome sinatra inspired, very
> popular, web app framework for node.
> 3. Using express directly using js interop calls can get ugly
> QED: It would make sense to have a cljs layer over express
>
> The Solution:
> I haven't ironed this out fully, but it would probably be a good idea to
> produce a compojure like framework, so its easier to adopt. Under the hood
> you'll obviously have either interop calls, or cljs implementations for the
> same functionality.
>
> Would love feedback on the idea! And whether can haz mentor?
>
> Cheers,
> Omer
> (@olenhad)
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: Why is this so difficult?

2013-02-14 Thread Lee Spector


On Feb 14, 2013, at 3:50 PM, Alex Walker wrote:

> The easiest, when anything becomes a road block, is simply tryclj.com 
> combined with 4clojure.com.
> 
> Those two alone can give you enough to work with and chew on while you become 
> more familiar with clojure and setup a proper environment (including 
> Leiningen).
> 
> Another simplification is to use lein-oneoff, once you have Leiningen 
> installed, so that you can delay understanding how projects are structured 
> and ran when typing "lein new". 

tryclj.com is fantastic for day 1 but not much more. 4clojure.com is fantastic 
for what it is, but not for writing your own code for your own purposes. I do 
use these on day 1 of my classes with newcomers and suggest them to others who 
want a first taste. 

But Clooj can take you from day 1 through many kinds of complete projects. In 
my experience it's pretty much the only thing out there in this sweet spot, 
requiring no prior knowledge of much of anything (JVM, installation stuff, 
special purpose editors, etc), but letting you do real work. Some other systems 
may be there some time soon (e.g. LightTable, although that has a lot of other 
stuff going on too), but in my experience none are quite as simple to deal with 
as Clooj while simultaneously supporting real work.

I've championed Clooj on this list a number of times and it's not because I 
have any personal connection to it. It's just because I think that the sweet 
spot that it fills is really important, and I hope that others (with more tool 
development skills etc) will come to appreciate that too and either help with 
that project or push other projects in that direction.

 -Lee

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




Re: [GSoC Idea] cljs layer/dsl over express js

2013-02-14 Thread Tamreen Khan
But compojure isn't in cljs, so you have to use the jvm. A wrapper around
express would mean you could run it on node.


On Thu, Feb 14, 2013 at 5:35 PM, Josh Kamau  wrote:

> Clojure has compojure ... which is a sinatra like web framework  and
> you can create a new project using"lein new compojure"   and start
> creating your request handler functions from there ... Just like in
> express.  If you want a jade equivalent... you can use hiccup .
>
> Josh.
>
>
> On Fri, Feb 15, 2013 at 12:30 AM, Omer Iqbal wrote:
>
>> Just throwing ideas. Feel free to shoot it down if you folks think its
>> not worth it :).
>> Also, I'm a student, and would actually be participating in GSOC, so this
>> is more of a shoutout for possible mentors, if you guys think the project
>> makes sense.
>>
>> The Problem:
>> 1. cljs doesn't yet have a library/framework of its own to facilitate
>> serverside web dev over nodejs. (I might be wrong here, and please correct
>> me if I am).
>> 2. Expressjs(http://expressjs.com/) is an awesome sinatra inspired, very
>> popular, web app framework for node.
>> 3. Using express directly using js interop calls can get ugly
>> QED: It would make sense to have a cljs layer over express
>>
>> The Solution:
>> I haven't ironed this out fully, but it would probably be a good idea to
>> produce a compojure like framework, so its easier to adopt. Under the hood
>> you'll obviously have either interop calls, or cljs implementations for the
>> same functionality.
>>
>> Would love feedback on the idea! And whether can haz mentor?
>>
>> Cheers,
>> Omer
>> (@olenhad)
>>
>>  --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Pretty-printing `lein test`s output?

2013-02-14 Thread vemv
First of all, I must say I'm new to testing in Clojure. My current workflow 
is pretty simple:

* Edit + save the tests (which use clojure.test - I hear Midje is better 
though) in emacs
* Run `lein test` in the terminal
* recur

But then the printed values (triggered when e.g. an `are` case fails) are 
fairly illegible, especially when big.

Can I get the test runner to pprint its output? Is my workflow improvable 
anyway?

Thanks - Victor

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




How to bind an Aleph TCP server to a TCP v4 port?

2013-02-14 Thread Jorge Luis Pérez
 

I started to learn Clojure a couple of days ago. I was trying with some 
Aleph TCP echo server examples but I can not get the server to bind to a 
tcp v4 port. The server only binds to a tcp v6 port by default. 

Here my project file: 

(defproject clj-echo-server "0.1.0-SNAPSHOT"
  :description "Echo server with Aleph"
  :url "http://example.com/FIXME";
  :license {:name "Eclipse Public License"
  :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.4.0"]
 [aleph "0.3.0-beta12"]]
  :main clj-echo-server.core)

And the server code:

(ns clj-echo-server.core)
(use 'lamina.core 'aleph.tcp 'gloss.core)
(defn handler [ch client-info]
  (receive-all ch
#(enqueue ch (str "You said " %
(start-tcp-server
  handler
  {:port 9000, :frame (string :utf-8 :delimiters ["\r\n"])})


I can't figure out if I'm doing something wrong or how to configure the 
binding port, the documentation wasn't very helpful about tcp ports.

My OS is an Ubuntu 12.04.2 LTS, the Leiningen version is 2.0.0-preview10 
and all runs on Java 1.6.0_24 OpenJDK 64-Bit Server VM.

Can anyone advise me on how to configure the port binding for the tcp 
server?

Thanks for your time.

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




Re: Why is this so difficult?

2013-02-14 Thread Jules
You are certainly not alone. Learning the language and concepts is very 
easy for me, but the sysadmin stuff to get set up is so much harder. 
Believe it or not, I had much more trouble with installing core.logic than 
understanding it. It doesn't end either, you bump into more problems once 
you try to do something interesting. Just try e.g. to call the LLVM C api 
from Clojure, I have not succeeded to this day (was trying to implement a 
LLVM backend for Clojurescript). You have the same problem with many open 
source projects, they are simply not focused on user friendliness, it's 
certainly not a Clojure specific problem. If you are on Windows the 
problems are 10x worse. Compare this with e.g. Visual Studio. You install 
it, and everything just works. Package manager, calling C functions, 
powerful GUI libraries, IDE with debugger, syntax highlighting, 
autocomplete, etc. From the first minute on you are programming rather than 
sysadmining. I wish we had the same experience for Clojure.

On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>
> Having studied Lisp decades ago I like the look of Clojure a lot. But as a 
> complete newbie when it comes to modern software development, I'm 
> exasperated by what strikes me as a very difficult and primitive set of 
> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
> homepage boasts that "Leinigen offers the easiest way to get started with 
> Clojure", but this simply isn't true. The easiest way to get started with 
> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
> that I'd probably have given up by now. 
>
> What got me back into programming recently was a Lua-based development 
> environment for Android called Gideros. Lua seems popular for developing 
> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
> language, though I'd like to use something more Lisp-like. Maybe the tools 
> are just too difficult for me at the moment, though I'll persevere for a 
> bit. I'd like to achieve some simple graphics on an Android device at 
> least. I've come across some tutorials for CLojure and jMonkey and I'm 
> wondering to dive into that, though I'm still unsure whether OpenGL is the 
> way to go for simple 2D stuff...
>

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




Looping and accumulation

2013-02-14 Thread Jonathon McKitrick
I have a loop over a function that is accumulating a list of database keys 
for later use.  But it is primarily doing other processing and returning a 
collection of processed/filtered records.  I'd normally just PUSH the ids 
and records onto a list in Common Lisp, or even LOOP... COLLECT into 2 
lists.  In the Clojure way, how would I build this auxiliary list without 
using a mutable collection?  Would it make sense to return a map or some 
other structure from the processing function that would contain both the 
processed record as well as any id of interest?  I could accumulate this 
result, then filter the map into 2 collections - one of processed records 
and the other a subset of id's of interest.  But that seems kludgy 
commingling the results like that.

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




Re: [GSoC Idea] cljs layer/dsl over express js

2013-02-14 Thread David Nolen
I responded to Omer on Twitter, it's probably worth looking into existing
projects like Bodil Stokke's Dog Fort first -
https://github.com/bodil/dogfort

David


On Thu, Feb 14, 2013 at 5:48 PM, Tamreen Khan  wrote:

> But compojure isn't in cljs, so you have to use the jvm. A wrapper around
> express would mean you could run it on node.
>
>
> On Thu, Feb 14, 2013 at 5:35 PM, Josh Kamau  wrote:
>
>> Clojure has compojure ... which is a sinatra like web framework  and
>> you can create a new project using"lein new compojure"   and start
>> creating your request handler functions from there ... Just like in
>> express.  If you want a jade equivalent... you can use hiccup .
>>
>> Josh.
>>
>>
>> On Fri, Feb 15, 2013 at 12:30 AM, Omer Iqbal wrote:
>>
>>> Just throwing ideas. Feel free to shoot it down if you folks think its
>>> not worth it :).
>>> Also, I'm a student, and would actually be participating in GSOC, so
>>> this is more of a shoutout for possible mentors, if you guys think the
>>> project makes sense.
>>>
>>> The Problem:
>>> 1. cljs doesn't yet have a library/framework of its own to facilitate
>>> serverside web dev over nodejs. (I might be wrong here, and please correct
>>> me if I am).
>>> 2. Expressjs(http://expressjs.com/) is an awesome sinatra inspired,
>>> very popular, web app framework for node.
>>> 3. Using express directly using js interop calls can get ugly
>>> QED: It would make sense to have a cljs layer over express
>>>
>>> The Solution:
>>> I haven't ironed this out fully, but it would probably be a good idea to
>>> produce a compojure like framework, so its easier to adopt. Under the hood
>>> you'll obviously have either interop calls, or cljs implementations for the
>>> same functionality.
>>>
>>> Would love feedback on the idea! And whether can haz mentor?
>>>
>>> Cheers,
>>> Omer
>>> (@olenhad)
>>>
>>>  --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>  --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: Why is this so difficult?

2013-02-14 Thread vemv
I never tried out core.logic. This is how I just got it "installed" in less 
than a minute. Really no magic here:

lein new foo; cd foo
# google "core.logic", grab the dependencies vector ([org.clojure/core.logic 
"0.7.5"]), attach it to your project.clj
lein repl

(use 'clojure.core.logic)(run* [q]
  (== q true))  


Same principle for practically every single Clojure lib.

On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:
>
> You are certainly not alone. Learning the language and concepts is very 
> easy for me, but the sysadmin stuff to get set up is so much harder. 
> Believe it or not, I had much more trouble with installing core.logic than 
> understanding it. It doesn't end either, you bump into more problems once 
> you try to do something interesting. Just try e.g. to call the LLVM C api 
> from Clojure, I have not succeeded to this day (was trying to implement a 
> LLVM backend for Clojurescript). You have the same problem with many open 
> source projects, they are simply not focused on user friendliness, it's 
> certainly not a Clojure specific problem. If you are on Windows the 
> problems are 10x worse. Compare this with e.g. Visual Studio. You install 
> it, and everything just works. Package manager, calling C functions, 
> powerful GUI libraries, IDE with debugger, syntax highlighting, 
> autocomplete, etc. From the first minute on you are programming rather than 
> sysadmining. I wish we had the same experience for Clojure.
>
> On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>>
>> Having studied Lisp decades ago I like the look of Clojure a lot. But as 
>> a complete newbie when it comes to modern software development, I'm 
>> exasperated by what strikes me as a very difficult and primitive set of 
>> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
>> homepage boasts that "Leinigen offers the easiest way to get started with 
>> Clojure", but this simply isn't true. The easiest way to get started with 
>> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
>> that I'd probably have given up by now. 
>>
>> What got me back into programming recently was a Lua-based development 
>> environment for Android called Gideros. Lua seems popular for developing 
>> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
>> language, though I'd like to use something more Lisp-like. Maybe the tools 
>> are just too difficult for me at the moment, though I'll persevere for a 
>> bit. I'd like to achieve some simple graphics on an Android device at 
>> least. I've come across some tutorials for CLojure and jMonkey and I'm 
>> wondering to dive into that, though I'm still unsure whether OpenGL is the 
>> way to go for simple 2D stuff...
>>
>

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




Re: Why is this so difficult?

2013-02-14 Thread Jules
Sure, but you have assumed that you have a perfectly working clojure 
environment set up. *That* is the hard part.

On Friday, February 15, 2013 12:19:34 AM UTC+1, vemv wrote:
>
> I never tried out core.logic. This is how I just got it "installed" in 
> less than a minute. Really no magic here:
>
> lein new foo; cd foo
> # google "core.logic", grab the dependencies vector ([org.clojure/core.logic 
> "0.7.5"]), attach it to your project.clj
> lein repl
>
> (use 'clojure.core.logic)(run* [q]
>   (== q true))  
>
>
> Same principle for practically every single Clojure lib.
>
> On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:
>>
>> You are certainly not alone. Learning the language and concepts is very 
>> easy for me, but the sysadmin stuff to get set up is so much harder. 
>> Believe it or not, I had much more trouble with installing core.logic than 
>> understanding it. It doesn't end either, you bump into more problems once 
>> you try to do something interesting. Just try e.g. to call the LLVM C api 
>> from Clojure, I have not succeeded to this day (was trying to implement a 
>> LLVM backend for Clojurescript). You have the same problem with many open 
>> source projects, they are simply not focused on user friendliness, it's 
>> certainly not a Clojure specific problem. If you are on Windows the 
>> problems are 10x worse. Compare this with e.g. Visual Studio. You install 
>> it, and everything just works. Package manager, calling C functions, 
>> powerful GUI libraries, IDE with debugger, syntax highlighting, 
>> autocomplete, etc. From the first minute on you are programming rather than 
>> sysadmining. I wish we had the same experience for Clojure.
>>
>> On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>>>
>>> Having studied Lisp decades ago I like the look of Clojure a lot. But as 
>>> a complete newbie when it comes to modern software development, I'm 
>>> exasperated by what strikes me as a very difficult and primitive set of 
>>> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
>>> homepage boasts that "Leinigen offers the easiest way to get started with 
>>> Clojure", but this simply isn't true. The easiest way to get started with 
>>> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
>>> that I'd probably have given up by now. 
>>>
>>> What got me back into programming recently was a Lua-based development 
>>> environment for Android called Gideros. Lua seems popular for developing 
>>> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
>>> language, though I'd like to use something more Lisp-like. Maybe the tools 
>>> are just too difficult for me at the moment, though I'll persevere for a 
>>> bit. I'd like to achieve some simple graphics on an Android device at 
>>> least. I've come across some tutorials for CLojure and jMonkey and I'm 
>>> wondering to dive into that, though I'm still unsure whether OpenGL is the 
>>> way to go for simple 2D stuff...
>>>
>>

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




Re: Why is this so difficult?

2013-02-14 Thread vemv
If this does not work for you, you can help everyone by opening an issue at 
the Leiningen bug tracker:

Make sure java and curl are correctly installed
Run the corresponding (unix or Windows) lein install script
Now you should be able to run lein repl, lein new, etc

On Friday, February 15, 2013 12:26:15 AM UTC+1, Jules wrote:
>
> Sure, but you have assumed that you have a perfectly working clojure 
> environment set up. *That* is the hard part.
>
> On Friday, February 15, 2013 12:19:34 AM UTC+1, vemv wrote:
>>
>> I never tried out core.logic. This is how I just got it "installed" in 
>> less than a minute. Really no magic here:
>>
>> lein new foo; cd foo
>> # google "core.logic", grab the dependencies vector ([org.clojure/core.logic 
>> "0.7.5"]), attach it to your project.clj
>> lein repl
>>
>> (use 'clojure.core.logic)(run* [q]
>>   (== q true))  
>>
>>
>> Same principle for practically every single Clojure lib.
>>
>> On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:
>>>
>>> You are certainly not alone. Learning the language and concepts is very 
>>> easy for me, but the sysadmin stuff to get set up is so much harder. 
>>> Believe it or not, I had much more trouble with installing core.logic than 
>>> understanding it. It doesn't end either, you bump into more problems once 
>>> you try to do something interesting. Just try e.g. to call the LLVM C api 
>>> from Clojure, I have not succeeded to this day (was trying to implement a 
>>> LLVM backend for Clojurescript). You have the same problem with many open 
>>> source projects, they are simply not focused on user friendliness, it's 
>>> certainly not a Clojure specific problem. If you are on Windows the 
>>> problems are 10x worse. Compare this with e.g. Visual Studio. You install 
>>> it, and everything just works. Package manager, calling C functions, 
>>> powerful GUI libraries, IDE with debugger, syntax highlighting, 
>>> autocomplete, etc. From the first minute on you are programming rather than 
>>> sysadmining. I wish we had the same experience for Clojure.
>>>
>>> On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:

 Having studied Lisp decades ago I like the look of Clojure a lot. But 
 as a complete newbie when it comes to modern software development, I'm 
 exasperated by what strikes me as a very difficult and primitive set of 
 tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
 homepage boasts that "Leinigen offers the easiest way to get started with 
 Clojure", but this simply isn't true. The easiest way to get started with 
 Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
 that I'd probably have given up by now. 

 What got me back into programming recently was a Lua-based development 
 environment for Android called Gideros. Lua seems popular for developing 
 apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
 language, though I'd like to use something more Lisp-like. Maybe the tools 
 are just too difficult for me at the moment, though I'll persevere for a 
 bit. I'd like to achieve some simple graphics on an Android device at 
 least. I've come across some tutorials for CLojure and jMonkey and I'm 
 wondering to dive into that, though I'm still unsure whether OpenGL is the 
 way to go for simple 2D stuff...

>>>

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




Re: Looping and accumulation

2013-02-14 Thread vemv
You want either `reduce` or `loop` as the control flow construct, and 
`conj` for appending items to a collection (without resorting to 
mutability). Have a look at them, they're pretty well covered in the 
available books, tutorials etc.

Hope it helps - Victor


On Friday, February 15, 2013 12:11:24 AM UTC+1, Jonathon McKitrick wrote:
>
> I have a loop over a function that is accumulating a list of database keys 
> for later use.  But it is primarily doing other processing and returning a 
> collection of processed/filtered records.  I'd normally just PUSH the ids 
> and records onto a list in Common Lisp, or even LOOP... COLLECT into 2 
> lists.  In the Clojure way, how would I build this auxiliary list without 
> using a mutable collection?  Would it make sense to return a map or some 
> other structure from the processing function that would contain both the 
> processed record as well as any id of interest?  I could accumulate this 
> result, then filter the map into 2 collections - one of processed records 
> and the other a subset of id's of interest.  But that seems kludgy 
> commingling the results like that.

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




poker-hands

2013-02-14 Thread James MacAulay
A little library to score poker hands:

https://github.com/jamesmacaulay/poker-hands

Feedback would be great!

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




Re: Why is this so difficult?

2013-02-14 Thread Timothy Washington
Hi BJG145,

I absolutely see where you're coming from. And in fairness, it did take a
me a long and arduous time to get a really proficient development
environment. I happen to really like expressive power. So when I came from
a Java / OO development paradigm, it didn't bother me that I had to learn
the innards of Clojure, it's toolset, and general world view. The fact that
it provides a geometrically more powerful platform, meant I was willing to
do the hard work to get started, to get those benefits.

But I actually do see and agree with your point. Justifying that effort is
hard given your background, spare time, etc. But I think this thread has
given you a lot of good places that'll help you get started.


*books & resources: *

   - 4clojure.com


*tools: *

   - clooj
   - tryclj.com


HTH
Tim


On Thu, Feb 14, 2013 at 6:34 PM, vemv  wrote:

> If this does not work for you, you can help everyone by opening an issue
> at the Leiningen bug tracker:
>
> Make sure java and curl are correctly installed
> Run the corresponding (unix or Windows) lein install script
> Now you should be able to run lein repl, lein new, etc
>
>
> On Friday, February 15, 2013 12:26:15 AM UTC+1, Jules wrote:
>>
>> Sure, but you have assumed that you have a perfectly working clojure
>> environment set up. *That* is the hard part.
>>
>> On Friday, February 15, 2013 12:19:34 AM UTC+1, vemv wrote:
>>>
>>> I never tried out core.logic. This is how I just got it "installed" in
>>> less than a minute. Really no magic here:
>>>
>>> lein new foo; cd foo
>>> # google "core.logic", grab the dependencies vector ([org.clojure/core.logic
>>> "0.7.5"]), attach it to your project.clj
>>> lein repl
>>>
>>> (use 'clojure.core.logic)(run* [q]
>>>   (== q true))
>>>
>>>
>>> Same principle for practically every single Clojure lib.
>>>
>>> On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:

 You are certainly not alone. Learning the language and concepts is very
 easy for me, but the sysadmin stuff to get set up is so much harder.
 Believe it or not, I had much more trouble with installing core.logic than
 understanding it. It doesn't end either, you bump into more problems once
 you try to do something interesting. Just try e.g. to call the LLVM C api
 from Clojure, I have not succeeded to this day (was trying to implement a
 LLVM backend for Clojurescript). You have the same problem with many open
 source projects, they are simply not focused on user friendliness, it's
 certainly not a Clojure specific problem. If you are on Windows the
 problems are 10x worse. Compare this with e.g. Visual Studio. You install
 it, and everything just works. Package manager, calling C functions,
 powerful GUI libraries, IDE with debugger, syntax highlighting,
 autocomplete, etc. From the first minute on you are programming rather than
 sysadmining. I wish we had the same experience for Clojure.

 On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>
> Having studied Lisp decades ago I like the look of Clojure a lot. But
> as a complete newbie when it comes to modern software development, I'm
> exasperated by what strikes me as a very difficult and primitive set of
> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen
> homepage boasts that "Leinigen offers the easiest way to get started with
> Clojure", but this simply isn't true. The easiest way to get started with
> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found
> that I'd probably have given up by now.
>
> What got me back into programming recently was a Lua-based development
> environment for Android called Gideros. Lua seems popular for developing
> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat
> language, though I'd like to use something more Lisp-like. Maybe the tools
> are just too difficult for me at the moment, though I'll persevere for a
> bit. I'd like to achieve some simple graphics on an Android device at
> least. I've come across some tutorials for CLojure and jMonkey and I'm
> wondering to dive into that, though I'm still unsure whether OpenGL is the
> way to go for simple 2D stuff...
>


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

Re: Looping and accumulation

2013-02-14 Thread Softaddicts
Look at the first example here:

http://clojuredocs.org/clojure_core/clojure.core/transient

It should inspire you.

Transient structures make this kind of loop run faster but as you lay out
your first iteration just toss this aside (and the xxx! version of conj and 
cie).

Luc P.


> I have a loop over a function that is accumulating a list of database keys 
> for later use.  But it is primarily doing other processing and returning a 
> collection of processed/filtered records.  I'd normally just PUSH the ids 
> and records onto a list in Common Lisp, or even LOOP... COLLECT into 2 
> lists.  In the Clojure way, how would I build this auxiliary list without 
> using a mutable collection?  Would it make sense to return a map or some 
> other structure from the processing function that would contain both the 
> processed record as well as any id of interest?  I could accumulate this 
> result, then filter the map into 2 collections - one of processed records 
> and the other a subset of id's of interest.  But that seems kludgy 
> commingling the results like that.
> 
> -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 
> 
--
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Looping and accumulation

2013-02-14 Thread Stephen Compall
On Feb 14, 2013 6:11 PM, "Jonathon McKitrick"  wrote:
> I have a loop over a function that is accumulating a list of database
keys for later use.  But it is primarily doing other processing and
returning a collection of processed/filtered records.

As you come from Common Lisp, where all standard library sequences are
strict, I think it will be more interesting for you to write a version of
your function that can work on infinite lists of records.

The point is laziness, not that the function will ever receive an infinite
seq, but this is a good way to think about it.  Consider that several
library functions, like map, filter, iterate, and take-while are all
lazy-friendly.

--
Stephen Compall
If anyone in the MSA is online, you should watch this flythrough.

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




Re: Google Summer of Code 2013

2013-02-14 Thread Jacob Goodson
I would love to improve upon core.match

On Thursday, February 14, 2013 1:10:29 PM UTC-5, David Nolen wrote:
>
> WOOT!
>
> I'm of course more than happy to mentor any projects around ClojureScript, 
> core.logic, and core.match.
>
> David
>
>
> On Thu, Feb 14, 2013 at 1:03 PM, Daniel Solano Gómez 
> 
> > wrote:
>
>> Hello, all,
>>
>> It's official:  Google Summer of Code 2013 is on.
>>
>> Last year, Clojure was able to get four students who worked on projects 
>> like Typed Clojure, Clojure on Android, Clojure and Lua, and Overtone, and 
>> I'd love to see Clojure be a mentoring organisation again this year.
>>
>> I have created a GSoC 2013 page on the Clojure community wiki <
>> http://dev.clojure.org/display/community/Google+Summer+of+Code+2013>. 
>>  Here you will be able to find the latest information about what's going on 
>> with Clojure's GSoC 2013 effort and how to get involved.
>>
>> Here's some ways you can help:
>>
>> * Let people in your local user groups or university know about Clojure 
>> and GSoC.
>> * If you're going to Clojure/West, attend the GSoC unsession.
>>
>> For students
>>
>> * Start researching project ideas and get involved with the relevant 
>> communities to find mentors.
>>
>> For developers:
>>
>> Does your open source project have a backlog of features to implement? 
>>  GSoC is a great way to draw new contributors to your project.
>>
>> * Post it to the project idea page and become a mentor.
>> * Let people know about GSoC on your project mailing list.
>>
>> I'd like to thank everyone in advance for helping with our GSoC 2013 
>> project.
>>
>> Sincerely,
>>
>> Daniel
>>
>> -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com 
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com .
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

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




Re: Why is this so difficult?

2013-02-14 Thread Mikera
FWIW, I've been using Clojure seriously for a couple of years now and never 
really used Leiningen. 

I've found that Eclipse with the awesome "Counterclockwise" plugin does 
everything that I need. This is also pretty easy for newcomers (assuming 
they know Eclipse) - just install the Counterclockwise plugin, create a 
Clojure project and code away. I use straight, regular Maven for build 
management, which does all of the dependency management stuff you need from 
Leiningen. 

Nothing against Leiningen, it is certainly a powerful toolset. However I 
prefer IDEs to command line tools, and I also do quite a bit of Java 
development so having an integrated IDE that does both Clojure and Java is 
much more useful to me.

So basically Clojure gives you a choice of different toolchains to suit 
your preferences and environment. That's a good thing overall, though I 
still agree that it would be better if there were more "newcomer friendly" 
distributions. In particular, a GUI-based REPL that people can use to just 
"launch and play" without learning a host of command line options or 
setting up an entire build environment would be an awesome addition if 
anyone feels inclined to create one. An evolution 
of https://github.com/alandipert/clj-swingrepl perhaps, maybe with a 
WebStart option so people can run it without having to download / install 
anything.

On Friday, 15 February 2013 02:42:57 UTC+8, BJG145 wrote:
>
> Having studied Lisp decades ago I like the look of Clojure a lot. But as a 
> complete newbie when it comes to modern software development, I'm 
> exasperated by what strikes me as a very difficult and primitive set of 
> tools to get started. I keep seeing "Leinigen, Leinigen", and the Leinigen 
> homepage boasts that "Leinigen offers the easiest way to get started with 
> Clojure", but this simply isn't true. The easiest way to get started with 
> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
> that I'd probably have given up by now. 
>
> What got me back into programming recently was a Lua-based development 
> environment for Android called Gideros. Lua seems popular for developing 
> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a neat 
> language, though I'd like to use something more Lisp-like. Maybe the tools 
> are just too difficult for me at the moment, though I'll persevere for a 
> bit. I'd like to achieve some simple graphics on an Android device at 
> least. I've come across some tutorials for CLojure and jMonkey and I'm 
> wondering to dive into that, though I'm still unsure whether OpenGL is the 
> way to go for simple 2D stuff...
>

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




Re: Pretty-printing `lein test`s output?

2013-02-14 Thread Alex Baranosky
Hi Victor,

I've developed something I use on my own projects to compare pretty printed
test failure output. The final piece for it would be to incorporate its
test failure report diffing into a leiningen plugin that wrapped lein test.

https://github.com/AlexBaranosky/gui-diff

On Thu, Feb 14, 2013 at 3:06 PM, vemv  wrote:

> First of all, I must say I'm new to testing in Clojure. My current
> workflow is pretty simple:
>
> * Edit + save the tests (which use clojure.test - I hear Midje is better
> though) in emacs
> * Run `lein test` in the terminal
> * recur
>
> But then the printed values (triggered when e.g. an `are` case fails) are
> fairly illegible, especially when big.
>
> Can I get the test runner to pprint its output? Is my workflow improvable
> anyway?
>
> Thanks - Victor
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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




Re: Why is this so difficult?

2013-02-14 Thread Jules
vemv, here is a file describing my Clojure install 
experience: https://www.dropbox.com/s/ln2ek5f5n47qnl1/clojureinstall.odp

How should I continue? And where would a beginner find that information?

Hopefully this is taken in good humor, this is meant as an illustration 
from a beginners' point of view, because undoubtedly the stupidity of a 
beginner (i.e. me) is greater than any expert can imagine. Keep in mind 
that once you know how to do something, doing it is easy. Driving to work 
is easy, but if you are in a new city then driving from point A to point B 
is hard if you don't know the way. The problem is the multitude of ways you 
can go wrong. The ideal experience would be a big "download Clojure starter 
kit" right on the clojure.org homepage, that would install leiningen, and 
an IDE with leiningen integration, and display a quick guide how to set up 
a project and run it.

Jules

On Friday, February 15, 2013 12:34:26 AM UTC+1, vemv wrote:
>
> If this does not work for you, you can help everyone by opening an issue 
> at the Leiningen bug tracker:
>
> Make sure java and curl are correctly installed
> Run the corresponding (unix or Windows) lein install script
> Now you should be able to run lein repl, lein new, etc
>
> On Friday, February 15, 2013 12:26:15 AM UTC+1, Jules wrote:
>>
>> Sure, but you have assumed that you have a perfectly working clojure 
>> environment set up. *That* is the hard part.
>>
>> On Friday, February 15, 2013 12:19:34 AM UTC+1, vemv wrote:
>>>
>>> I never tried out core.logic. This is how I just got it "installed" in 
>>> less than a minute. Really no magic here:
>>>
>>> lein new foo; cd foo
>>> # google "core.logic", grab the dependencies vector 
>>> ([org.clojure/core.logic 
>>> "0.7.5"]), attach it to your project.clj
>>> lein repl
>>>
>>> (use 'clojure.core.logic)(run* [q]
>>>   (== q true))  
>>>
>>>
>>> Same principle for practically every single Clojure lib.
>>>
>>> On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:

 You are certainly not alone. Learning the language and concepts is very 
 easy for me, but the sysadmin stuff to get set up is so much harder. 
 Believe it or not, I had much more trouble with installing core.logic than 
 understanding it. It doesn't end either, you bump into more problems once 
 you try to do something interesting. Just try e.g. to call the LLVM C api 
 from Clojure, I have not succeeded to this day (was trying to implement a 
 LLVM backend for Clojurescript). You have the same problem with many open 
 source projects, they are simply not focused on user friendliness, it's 
 certainly not a Clojure specific problem. If you are on Windows the 
 problems are 10x worse. Compare this with e.g. Visual Studio. You install 
 it, and everything just works. Package manager, calling C functions, 
 powerful GUI libraries, IDE with debugger, syntax highlighting, 
 autocomplete, etc. From the first minute on you are programming rather 
 than 
 sysadmining. I wish we had the same experience for Clojure.

 On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>
> Having studied Lisp decades ago I like the look of Clojure a lot. But 
> as a complete newbie when it comes to modern software development, I'm 
> exasperated by what strikes me as a very difficult and primitive set of 
> tools to get started. I keep seeing "Leinigen, Leinigen", and the 
> Leinigen 
> homepage boasts that "Leinigen offers the easiest way to get started with 
> Clojure", but this simply isn't true. The easiest way to get started with 
> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found 
> that I'd probably have given up by now. 
>
> What got me back into programming recently was a Lua-based development 
> environment for Android called Gideros. Lua seems popular for developing 
> apps for some reason. (Cf Corona, Moia, Unity). It seems like quite a 
> neat 
> language, though I'd like to use something more Lisp-like. Maybe the 
> tools 
> are just too difficult for me at the moment, though I'll persevere for a 
> bit. I'd like to achieve some simple graphics on an Android device at 
> least. I've come across some tutorials for CLojure and jMonkey and I'm 
> wondering to dive into that, though I'm still unsure whether OpenGL is 
> the 
> way to go for simple 2D stuff...
>


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

Re: Why is this so difficult?

2013-02-14 Thread Konrad Scorciapino
You might, BJG145, also profit by taking a look at clojurewiki.org - I'm
listing there all resources I can find.

Good luck!

2013/2/15 Jules 

> vemv, here is a file describing my Clojure install experience:
> https://www.dropbox.com/s/ln2ek5f5n47qnl1/clojureinstall.odp
>
> How should I continue? And where would a beginner find that information?
>
> Hopefully this is taken in good humor, this is meant as an illustration
> from a beginners' point of view, because undoubtedly the stupidity of a
> beginner (i.e. me) is greater than any expert can imagine. Keep in mind
> that once you know how to do something, doing it is easy. Driving to work
> is easy, but if you are in a new city then driving from point A to point B
> is hard if you don't know the way. The problem is the multitude of ways you
> can go wrong. The ideal experience would be a big "download Clojure starter
> kit" right on the clojure.org homepage, that would install leiningen, and
> an IDE with leiningen integration, and display a quick guide how to set up
> a project and run it.
>
> Jules
>
> On Friday, February 15, 2013 12:34:26 AM UTC+1, vemv wrote:
>>
>> If this does not work for you, you can help everyone by opening an issue
>> at the Leiningen bug tracker:
>>
>> Make sure java and curl are correctly installed
>> Run the corresponding (unix or Windows) lein install script
>> Now you should be able to run lein repl, lein new, etc
>>
>> On Friday, February 15, 2013 12:26:15 AM UTC+1, Jules wrote:
>>>
>>> Sure, but you have assumed that you have a perfectly working clojure
>>> environment set up. *That* is the hard part.
>>>
>>> On Friday, February 15, 2013 12:19:34 AM UTC+1, vemv wrote:

 I never tried out core.logic. This is how I just got it "installed" in
 less than a minute. Really no magic here:

 lein new foo; cd foo
 # google "core.logic", grab the dependencies vector 
 ([org.clojure/core.logic
 "0.7.5"]), attach it to your project.clj
 lein repl

 (use 'clojure.core.logic)(run* [q]
   (== q true))


 Same principle for practically every single Clojure lib.

 On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:
>
> You are certainly not alone. Learning the language and concepts is
> very easy for me, but the sysadmin stuff to get set up is so much harder.
> Believe it or not, I had much more trouble with installing core.logic than
> understanding it. It doesn't end either, you bump into more problems once
> you try to do something interesting. Just try e.g. to call the LLVM C api
> from Clojure, I have not succeeded to this day (was trying to implement a
> LLVM backend for Clojurescript). You have the same problem with many open
> source projects, they are simply not focused on user friendliness, it's
> certainly not a Clojure specific problem. If you are on Windows the
> problems are 10x worse. Compare this with e.g. Visual Studio. You install
> it, and everything just works. Package manager, calling C functions,
> powerful GUI libraries, IDE with debugger, syntax highlighting,
> autocomplete, etc. From the first minute on you are programming rather 
> than
> sysadmining. I wish we had the same experience for Clojure.
>
> On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>>
>> Having studied Lisp decades ago I like the look of Clojure a lot. But
>> as a complete newbie when it comes to modern software development, I'm
>> exasperated by what strikes me as a very difficult and primitive set of
>> tools to get started. I keep seeing "Leinigen, Leinigen", and the 
>> Leinigen
>> homepage boasts that "Leinigen offers the easiest way to get started with
>> Clojure", but this simply isn't true. The easiest way to get started with
>> Clojure that I've come across so far is IntelliJ IDEA. If I hadn't found
>> that I'd probably have given up by now.
>>
>> What got me back into programming recently was a Lua-based
>> development environment for Android called Gideros. Lua seems popular for
>> developing apps for some reason. (Cf Corona, Moia, Unity). It seems like
>> quite a neat language, though I'd like to use something more Lisp-like.
>> Maybe the tools are just too difficult for me at the moment, though I'll
>> persevere for a bit. I'd like to achieve some simple graphics on an 
>> Android
>> device at least. I've come across some tutorials for CLojure and jMonkey
>> and I'm wondering to dive into that, though I'm still unsure whether 
>> OpenGL
>> is the way to go for simple 2D stuff...
>>
>  --
> --
> 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 

Re: Why is this so difficult?

2013-02-14 Thread Sean Corfield
On Thu, Feb 14, 2013 at 6:56 PM, Jules  wrote:
> vemv, here is a file describing my Clojure install experience:
> https://www.dropbox.com/s/ln2ek5f5n47qnl1/clojureinstall.odp
>
> How should I continue? And where would a beginner find that information?

The problem is the Clojure world, for the most part, is all Mac and
Linux - Windows is very much a second class citizen that very few
Clojurians use at all. I surveyed the Bay Area Clojure Meetup members.
53 responded. Just 3 of them said they used Windows. Go to a Clojure
conference and it'll be mostly Macs and almost all of the rest will be
running Linux.

That means all the tools, all the instructions, all the thinking, is
focused on the command line and comes from a world where developers
know that installed software has to go on your path, which usually
means editing a dot file in your home directory, updating the PATH
variable and sourcing the dot file to pick up the changes. It also
means that the primary Clojure website is aimed at those kind of
developers and, more specifically, aimed at experienced developers on
those platforms who can pick thru the minimalist information and
variety of links scattered everywhere. The fact is: clojure.org is NOT
beginner friendly :(

Leiningen - the primary build tool - is a shell script. Clojure is a
library - a JAR file - and using Clojure relies (under the hood) on a
local Maven repository and then declaring and fetching dependencies
from various known repositories. Leiningen makes all that much simpler
than the raw tools. But it doesn't make it as simple as most Windows
users expect.

Having set up a dozen or so Clojure development environments on a
variety of Mac, Linux and Windows, here's what I recommend for
Windows:

* Start with GOW - Gnu on Windows - so that you have the basic Linux
toolset that is so familiar to most Clojurians:
https://github.com/bmatzelle/gow/downloads
* It installs curl and wget (and a bunch of other very useful stuff)
and adds it to your path directly! Read more here:
https://github.com/bmatzelle/gow/wiki
* Download the Leiningen Windows batch file. I put mine in C:\LEIN and
then added C:\LEIN to my Path environment variable (in the system
environment variables)
* Start a new cmd shell window (or Powershell if you're that way
inclined) and type: lein self-install

At least at this point you can create new Clojure projects, edit
project.clj with your favorite editor to add dependencies, and use
lein repl in a cmd shell to experiment with those libraries.

As others have said, try Clooj if you really have no idea about the
command line or the Java ecosystem. Try LightTable once you've
installed Leiningen and created a project to play with.

If you're a Java developer on Windows, you're probably using Eclipse
or IntelliJ so install the Clojure plugin and use that.

If you're brave, try Emacs - that's what most Clojurians use and it
really does have the most integrated overall workflow, especially with
a built-in shell, IRC client and various other goodies.
--
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Why is this so difficult?

2013-02-14 Thread Michael Klishin
2013/2/15 Konrad Scorciapino 

> You might, BJG145, also profit by taking a look at clojurewiki.org - I'm
> listing there all resources I can find.
>

You may want to add clojure-doc.org, which is the most complete,
contributor friendly
source of documentation guides (including guides on the ecosystem).
-- 
MK

http://github.com/michaelklishin
http://twitter.com/michaelklishin

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




Re: [ANN] analyze 0.3.0 - Hygienic transformation

2013-02-14 Thread ronen

It looks as if https://github.com/jonase/kibit/ is a lint/check style tool 
that only reads the source code, this limits its utilization:

"Kibit 
reads
 source 
code without any macro expansion or evaluation. A macro can therefor easily 
invalidate a rule. Also, kibit will not know if the symbol + in the form (+ 
x 1) actually refers to a local or to a function in a namespace other than 
clojure.core. Expect some false positives."

So there is a place for an AST based one (more similar to findbugs I guess)

On Wednesday, February 13, 2013 9:21:52 AM UTC+2, Ambrose Bonnaire-Sergeant 
wrote:
>
> IMO that's the job of a "linter"-style tool, which can be written easily 
> with `analyze`.
>
> On Tue, Feb 12, 2013 at 11:58 PM, Michael Wood 
> > wrote:
>
>> It might be useful, though, to be able to enable warnings for shadowed
>> variables.
>>
>> On 12 February 2013 17:38, Timothy Baldridge 
>> > 
>> wrote:
>> > This sort of pattern is used quite a lot in clojure (even in core):
>> >
>> > (let [data (if (string? data) (read-string data) data)
>> >   data (if (string? (first data)) (first data) (next data))
>> >   data (if (string? (first data)) (first data) (next data))]
>> >  data)
>> >
>> > Throwing exceptions on overridden variable names would not only break
>> > Clojure code, but also is very "non-lispy".
>> >
>> > Timothy
>> >
>> >
>> >
>> > On Tue, Feb 12, 2013 at 6:31 AM, AtKaaZ > 
>> wrote:
>> >>
>> >> it makes sense to not throw now that I think about it, when using "_"
>> >> instead of "a"
>> >> I'm also thinking of cases like:
>> >> => (let [a 1]
>> >>  (let [b 2 a 3]
>> >>(println a b)))
>> >> 3 2
>> >> nil
>> >>
>> >> is there something that would let me know I'm overwriting "a" ? I 
>> figure
>> >> if something like this would slip by would be tough to track down
>> >>
>> >>
>> >> On Tue, Feb 12, 2013 at 1:46 PM, Michael Wood 
>> >> > 
>> wrote:
>> >>>
>> >>> On 12 February 2013 12:28, AtKaaZ > 
>> wrote:
>> >>> > what would this do:
>> >>> >
>> >>> > (let [a 1, a 2] a)
>> >>> > becomes:
>> >>> > (let [a 1, a123 2] a)
>> >>> > or
>> >>> > (let [a 1, a123 2] a123)
>> >>> > or
>> >>> > exception[I prefer]
>> >>>
>> >>> It would be the second option, i.e.:
>> >>>
>> >>> (let [a 1, a123 2] a123)
>> >>>
>> >>> The original code is valid, so it would not throw an exception.
>> >>>
>> >>> > On Tue, Feb 12, 2013 at 7:10 AM, Ambrose Bonnaire-Sergeant
>> >>> > > wrote:
>> >>> >>
>> >>> >> Processing a hygienic AST relieves the burden of worrying about
>> >>> >> shadowing
>> >>> >> of locals.
>> >>> >>
>> >>> >> Wherever a binding would normally be shadowed, it is instead 
>> renamed
>> >>> >> to a
>> >>> >> local binding currently not in scope.
>> >>> >>
>> >>> >> eg. (let [a 1, a a] a)
>> >>> >>
>> >>> >> becomes
>> >>> >>
>> >>> >> (let [a 1, a123 a] a123)
>> >>> >>
>> >>> >> It can be useful for those processing Clojure's analysis results.
>> >>> >>
>> >>> >> Thanks,
>> >>> >> Ambrose
>> >>> >>
>> >>> >>
>> >>> >> On Tue, Feb 12, 2013 at 1:54 AM, kovas boguta 
>> >>> >> 
>> >
>> >>> >> wrote:
>> >>> >>>
>> >>> >>> What is a hygienic AST?
>> >>> >>>
>> >>> >>> Thanks
>> >>> >>> k
>> >>> >>>
>> >>> >>>
>> >>> >>> On Sun, Feb 10, 2013 at 10:45 PM, Ambrose Bonnaire-Sergeant
>> >>> >>> > wrote:
>> >>> >>> > Hi everyone,
>> >>> >>> >
>> >>> >>> > Happy to release analyze 0.3.0 with new hygienic code
>> >>> >>> > transformation
>> >>> >>> > capabilities.
>> >>> >>> >
>> >>> >>> > [analyze "0.3.0"]
>> >>> >>> >
>> >>> >>> > In a line:
>> >>> >>> >
>> >>> >>> > analyze.hygienic=> (-> (ast (let [a 1 a a b a a a] a)) ast-hy
>> >>> >>> > emit-hy)
>> >>> >>> > ((fn* ([] (let* [a 1 a2921 a b a2921 a2922 a2921] a2922
>> >>> >>> >
>> >>> >>> > Hygienic AST's have enabled large performance boosts in 
>> core.typed.
>> >>> >>> > I'm
>> >>> >>> > excited to see how it could
>> >>> >>> > be as useful to others.
>> >>> >>> >
>> >>> >>> > Note: "hygienic" AST's (those transformed with
>> >>> >>> > `analyze.hygienic/ast-hy` can
>> >>> >>> > be printed normally with `analyze.emit-form/emit-form`, and
>> >>> >>> > hygienically
>> >>> >>> > with `analyze.hygienic/emit-hy`.
>> >>> >>> >
>> >>> >>> > https://github.com/frenchy64/analyze
>> >>> >>> >
>> >>> >>> > Thanks,
>> >>> >>> > Ambrose
>> >>> >>> >
>> >>> >>> > --
>> >>> >>> > --
>> >>> >>> > You received this message because you are subscribed to the 
>> Google
>> >>> >>> > Groups "Clojure" group.
>> >>> >>> > To post to this group, send email to 
>> >>> >>> > clo...@googlegroups.com
>> >>> >>> > Note that posts from new members are moderated - please be 
>> patient
>> >>> >>> > with
>> >>> >>> > your
>> >>> >>> > first post.
>> >>> >>> > To unsubscribe from this group, send email to
>> >>> >>> > clojure+u...@googlegroups.com 
>> >>> >>> > For more options, visit this group at
>> >>> >>> > http://groups.google.com/group/clojure?hl=en
>> >>> >>> > ---
>> >>> >>> > You receive

Re: [ANN] analyze 0.3.0 - Hygienic transformation

2013-02-14 Thread Jonas


On Friday, February 15, 2013 6:19:00 AM UTC+2, ronen wrote:
>
>
> It looks as if https://github.com/jonase/kibit/ is a lint/check style 
> tool that only reads the source code, this limits its utilization:
>
> "Kibit 
> reads
>  source 
> code without any macro expansion or evaluation. A macro can therefor easily 
> invalidate a rule. Also, kibit will not know if the symbol + in the form (+ 
> x 1) actually refers to a local or to a function in a namespace other 
> than clojure.core. Expect some false positives."
>
> So there is a place for an AST based one (more similar to findbugs I guess)
>

If someone is interested in this https://github.com/jonase/eastwood might 
be a good starting point.
 

>
> On Wednesday, February 13, 2013 9:21:52 AM UTC+2, Ambrose 
> Bonnaire-Sergeant wrote:
>>
>> IMO that's the job of a "linter"-style tool, which can be written easily 
>> with `analyze`.
>>
>> On Tue, Feb 12, 2013 at 11:58 PM, Michael Wood  wrote:
>>
>>> It might be useful, though, to be able to enable warnings for shadowed
>>> variables.
>>>
>>> On 12 February 2013 17:38, Timothy Baldridge  wrote:
>>> > This sort of pattern is used quite a lot in clojure (even in core):
>>> >
>>> > (let [data (if (string? data) (read-string data) data)
>>> >   data (if (string? (first data)) (first data) (next data))
>>> >   data (if (string? (first data)) (first data) (next data))]
>>> >  data)
>>> >
>>> > Throwing exceptions on overridden variable names would not only break
>>> > Clojure code, but also is very "non-lispy".
>>> >
>>> > Timothy
>>> >
>>> >
>>> >
>>> > On Tue, Feb 12, 2013 at 6:31 AM, AtKaaZ  wrote:
>>> >>
>>> >> it makes sense to not throw now that I think about it, when using "_"
>>> >> instead of "a"
>>> >> I'm also thinking of cases like:
>>> >> => (let [a 1]
>>> >>  (let [b 2 a 3]
>>> >>(println a b)))
>>> >> 3 2
>>> >> nil
>>> >>
>>> >> is there something that would let me know I'm overwriting "a" ? I 
>>> figure
>>> >> if something like this would slip by would be tough to track down
>>> >>
>>> >>
>>> >> On Tue, Feb 12, 2013 at 1:46 PM, Michael Wood  
>>> wrote:
>>> >>>
>>> >>> On 12 February 2013 12:28, AtKaaZ  wrote:
>>> >>> > what would this do:
>>> >>> >
>>> >>> > (let [a 1, a 2] a)
>>> >>> > becomes:
>>> >>> > (let [a 1, a123 2] a)
>>> >>> > or
>>> >>> > (let [a 1, a123 2] a123)
>>> >>> > or
>>> >>> > exception[I prefer]
>>> >>>
>>> >>> It would be the second option, i.e.:
>>> >>>
>>> >>> (let [a 1, a123 2] a123)
>>> >>>
>>> >>> The original code is valid, so it would not throw an exception.
>>> >>>
>>> >>> > On Tue, Feb 12, 2013 at 7:10 AM, Ambrose Bonnaire-Sergeant
>>> >>> >  wrote:
>>> >>> >>
>>> >>> >> Processing a hygienic AST relieves the burden of worrying about
>>> >>> >> shadowing
>>> >>> >> of locals.
>>> >>> >>
>>> >>> >> Wherever a binding would normally be shadowed, it is instead 
>>> renamed
>>> >>> >> to a
>>> >>> >> local binding currently not in scope.
>>> >>> >>
>>> >>> >> eg. (let [a 1, a a] a)
>>> >>> >>
>>> >>> >> becomes
>>> >>> >>
>>> >>> >> (let [a 1, a123 a] a123)
>>> >>> >>
>>> >>> >> It can be useful for those processing Clojure's analysis results.
>>> >>> >>
>>> >>> >> Thanks,
>>> >>> >> Ambrose
>>> >>> >>
>>> >>> >>
>>> >>> >> On Tue, Feb 12, 2013 at 1:54 AM, kovas boguta <
>>> kovas@gmail.com>
>>> >>> >> wrote:
>>> >>> >>>
>>> >>> >>> What is a hygienic AST?
>>> >>> >>>
>>> >>> >>> Thanks
>>> >>> >>> k
>>> >>> >>>
>>> >>> >>>
>>> >>> >>> On Sun, Feb 10, 2013 at 10:45 PM, Ambrose Bonnaire-Sergeant
>>> >>> >>>  wrote:
>>> >>> >>> > Hi everyone,
>>> >>> >>> >
>>> >>> >>> > Happy to release analyze 0.3.0 with new hygienic code
>>> >>> >>> > transformation
>>> >>> >>> > capabilities.
>>> >>> >>> >
>>> >>> >>> > [analyze "0.3.0"]
>>> >>> >>> >
>>> >>> >>> > In a line:
>>> >>> >>> >
>>> >>> >>> > analyze.hygienic=> (-> (ast (let [a 1 a a b a a a] a)) ast-hy
>>> >>> >>> > emit-hy)
>>> >>> >>> > ((fn* ([] (let* [a 1 a2921 a b a2921 a2922 a2921] a2922
>>> >>> >>> >
>>> >>> >>> > Hygienic AST's have enabled large performance boosts in 
>>> core.typed.
>>> >>> >>> > I'm
>>> >>> >>> > excited to see how it could
>>> >>> >>> > be as useful to others.
>>> >>> >>> >
>>> >>> >>> > Note: "hygienic" AST's (those transformed with
>>> >>> >>> > `analyze.hygienic/ast-hy` can
>>> >>> >>> > be printed normally with `analyze.emit-form/emit-form`, and
>>> >>> >>> > hygienically
>>> >>> >>> > with `analyze.hygienic/emit-hy`.
>>> >>> >>> >
>>> >>> >>> > https://github.com/frenchy64/analyze
>>> >>> >>> >
>>> >>> >>> > Thanks,
>>> >>> >>> > Ambrose
>>> >>> >>> >
>>> >>> >>> > --
>>> >>> >>> > --
>>> >>> >>> > You received this message because you are subscribed to the 
>>> Google
>>> >>> >>> > Groups "Clojure" group.
>>> >>> >>> > To post to this group, send email to clo...@googlegroups.com
>>> >>> >>> > Note that posts from new members are moderated - please be 
>>> patient
>>> >>> >>> > with

Re: Pretty-printing `lein test`s output?

2013-02-14 Thread Phil Hagelberg
On Thu, Feb 14, 2013 at 3:06 PM, vemv  wrote:
> But then the printed values (triggered when e.g. an `are` case fails) are
> fairly illegible, especially when big.
>
> Can I get the test runner to pprint its output? Is my workflow improvable
> anyway?

I use lein-difftest for this: https://github.com/brentonashworth/lein-difftest

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




Re: Pretty-printing `lein test`s output?

2013-02-14 Thread Sean Corfield
You'll find your workflow greatly improved by using nrepl (or
slime/swank) and running tests directly from Emacs - and that applies
whether you're using bare clojure.test, midje or expectations.

I use expectations for testing and expectations-mode in Emacs. I can
run an individual namespace's tests with C-c , and it shows the pass /
fail summary in the minibuffer and highlights any failing tests in
orange or red (depending on how they failed). It also shows the
pass/fail summary in the repl buffer. Pretty sure there are equivalent
modes for both clojure.test and midje.

On Thu, Feb 14, 2013 at 3:06 PM, vemv  wrote:
> First of all, I must say I'm new to testing in Clojure. My current workflow
> is pretty simple:
>
> * Edit + save the tests (which use clojure.test - I hear Midje is better
> though) in emacs
> * Run `lein test` in the terminal
> * recur
>
> But then the printed values (triggered when e.g. an `are` case fails) are
> fairly illegible, especially when big.
>
> Can I get the test runner to pprint its output? Is my workflow improvable
> anyway?
>
> Thanks - Victor
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>



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




Re: protocol implementation delegating to protocol extension doesn't compile

2013-02-14 Thread juan.facorro
Hi Jim:

I think the problem is that you are actually calling the *getDistance *protocol 
function with only 2 arguments in the line in bold below:
 
(defrecord LevenshteinDistance [] 
  IDistance 
  (getDistance [_ s1 s2] 
 *(getDistance s1 s2))  ;; <- Calling a getDistance function with 2 args
*
  (getDistance [_ s1 s2 weight] 
 (getDistance s1 s2 weight)))

While in the protocol definition there's only a 3 and 4 arguments 
declarations for getDistance.

(defprotocol IDistance 
  (getDistance 
[this s1 s2]; 3 args
[this s1 s2 m-weight])) ; 4 args

You could add a 2 arguments override for the *getDistance* protocol 
function and it would work by calling the 2 args implementation added to 
String, which is actually never registered in the protocol and goes 
unnoticed for the reason that follows, which I myself found out while 
experimenting with your code, you can skip it if you like, I just had a 
little fun investigating some Clojure code :).

When using *extend-type*, any implementation for a protocol function with a 
number of args not present in the protocol's declaration doesn't seem to 
produce any errors or warnings (*extend* presents the same behavior, which 
makes sense since *extend-type* uses it).

(defprotocol SomeProtocol
  (some-function [this x] [this x y]))
 
(defrecord SomeRecord [])

(extend-type SomeRecord
  SomeProtocol 
  (some-function 
([_] (println "1-arg")) ; this is not declared 
([_ _ _ _ _] (println "5-arg")) ; this is not declared 
([_ x y]
  (some-function x y)))

However, a *CompilerException* is thrown when implementing a protocol using 
the *defrecord* macro, and declaring a non-existing override for the 
function. I looked a little bit into the code of *defrecord *and the reason 
for this seems to be that it ultimately uses *deftype* which actually 
creates a class that implements the methods for the Java interface that the 
protocol defines, the compiler checks in this case if there's any method 
with the name and arity with the supplied implementation, and throws an 
exception if it doesn't.

(defprotocol SomeProtocol
  (some-function [this x] [this x y]))

(defrecord SomeRecord []
  SomeProtocol 
  (some-function [_] (println "1-arg")) ; this is not declared 
  (some-function [_ x y] 
(some-function x y)))

#

This seems to indicate that using extend (or extend-type) vs. deftpye (or 
defrecord) for implementing a protocol yields two different results, the 
former registers the function implementations in the protocol using the map 
supplied and the latter actually creates a class method for the record or 
type class generated. 

This was not obvious at all to me and I think I even recall reading 
somewhere (can't remember exactly where and can't find it right now) that 
the defrecord "inline" implementation was just a convenience form for 
extend/extend-type, but is it possible that it's actually more performant 
to use the defrecord/deftpye?

Hope it helps,

Juan

On Thursday, February 14, 2013 5:16:53 PM UTC-3, Jim foo.bar wrote:
>
> let me explain with an example: 
>
>
> ;;in some namespace x 
>
> (defprotocol IStemmable 
> (stem [this token] [this token lang]) 
> (getRoot [this token dictionary])) 
>
> (defprotocol IDistance 
> (getDistance [this s1 s2] [this s1 s2 m-weight])) 
>
> ;;in some namespace y that refers all vars from x 
>
> (extend-type String 
>   IStemmable 
>   (stem 
>([this] (stem this "english")) 
>([this lang] 
>   (let [stemmer (help/porter-stemmer lang)] 
>  (doto stemmer 
>  (.setCurrent this) 
>  (.stem)) 
>(.getCurrent stemmer 
>   (getRoot [this _ dic] (get dic this "NOT-FOUND!")) 
>   IDistance 
>   (getDistance 
> ([this other] 
>(help/levenshtein-distance* this other)) ;;delegate to helper fn 
> ([this other mismatch-weight] 
>(help/levenshtein-distance* this other mismatch-weight ;;same 
> here 
>
>
> (defrecord PorterStemmer [lang input output] ;;COMPILES AND WORKS FINE - 
> NO PROBLEMS 
> IStemmable 
> (stem [_ token] 
>(stem token lang))   ;;delegate to String for this 
> (getRoot [_ token dic] 
>(getRoot token _ dic ;;delegate to String for this 
>
>
> (defrecord LevenshteinDistance []  ;;DOESN'T COMPILE 
> IDistance 
> (getDistance [_ s1 s2] 
>(getDistance s1 s2))  ;;delegate to String for this 
> (getDistance [_ s1 s2 weight] 
>(getDistance s1 s2 weight)))  ;;and this 
>
>
> trying to load the file results in: 
>
> CompilerException java.lang.IllegalArgumentException: No single method: 
> getDistance of interface: cluja.protocols.IDistance found for function: 
> getDistance of protocol: IDistance, 
> compiling:(/media/sorted/uni_stick/cluja/src/cluja/concretions/models.clj:152:3)
>  
>
>
>
> What am I doing wrong? I am practically doing the exact same thing for 
> these 2 protocols. Both of them delegate to the implementations extended 
> to string. I ke

Re: Why is this so difficult?

2013-02-14 Thread juan.facorro
I feel your pain BJG145, when I started learning Clojure I used 
Clooj to 
be able start playing with the language, it provides the basics, a REPL, a 
text area for the code and a tree of files and folder for the current 
project. It's simple and get's you started, you can for example follow book 
examples with it, or try new concepts and play around. Once I started 
feeling that the pieces were fitting together, I began to consider checking 
what Leiningen was all about. At that time there was no .bat file for 
Windows, so I decided to use cygwin  instead, which 
is a *nix like command-line environment for Windows, and it has worked like 
charm since then. 

Coming from IDE's like Eclispse and Visual Studio, getting used to the 
command-line for running things, was far from my comfort zone, and I think 
I understand where you are coming from. Counter-Clockwise 
is an Eclipse 
plugin, really easy to install that is, 
IMHO, one of the best user-friendly, GUI-familiar options for Clojure 
development right now. 

Still, I think some tool is missing for Clojure that can lower the 
difficulties for newcomers to try out the language and be able to reap the 
benefits of using it, while avoiding to be overwhelmed by the initial 
environment configuration. It may seem trivial to some, but I think it's 
because we get used to the workflow, but for someone who's new, every 
little detail needs consideration and every new concept needs to be 
grasped, so if the configuration details and concepts could be minimized, 
then I think the language would speak for itself.

Anyway, I digress. I just wanted to finish this post saying that if you 
take the time to learn Clojure I think you'll have fun in the process, you 
will have a very powerful tool under your belt and you'll get support from 
a friendly community.

Cheers,

J

On Thursday, February 14, 2013 6:29:07 PM UTC-3, BJG145 wrote:

> Thanks for the suggestions - this really isn't an anti-Leiningen thread, 
> I'm just impatient that I don't understand it yet. But I'll give it another 
> crack and post some more coherent queries when I get stuck...:-)
>  
>

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




Re: Why is this so difficult?

2013-02-14 Thread Víctor M . V .
Well the first thing you assume is that project pages should be giant
download buttons, and therefore the exposed content in those pages is not
worth reading/understanding. For instance you can find the answer to the
question posed in the slide 19 in slide 7.

Just imagine if every single open source project had to explain what the
PATH is, how to install curl, and so on.

You (and me) will be constantly a newbie at something, and the "getting
started guide" (if any) will be almost invariably incomplete. So you better
practice the skill of figuring out things.

That said, the wording in lein's installation instructions for Windows is
improvable - it should acknowledge the fact that working with the Windows
mindset can pretty much equal "clicking till it works". In particular it
should leave clear that you *want* curl installed even if it isn't:

On Windows most users can get the batch file. If you have wget.exe or
> curl.exe already installed and in PATH, you can just run lein self-install,
> *otherwise* get the standalone jar from the downloads page. If you have
> Cygwin you should be able to use the shell script above rather than the
> batch file.
>

Emphasis mine.

On Fri, Feb 15, 2013 at 3:56 AM, Jules  wrote:

> vemv, here is a file describing my Clojure install experience:
> https://www.dropbox.com/s/ln2ek5f5n47qnl1/clojureinstall.odp
>
> How should I continue? And where would a beginner find that information?
>
> Hopefully this is taken in good humor, this is meant as an illustration
> from a beginners' point of view, because undoubtedly the stupidity of a
> beginner (i.e. me) is greater than any expert can imagine. Keep in mind
> that once you know how to do something, doing it is easy. Driving to work
> is easy, but if you are in a new city then driving from point A to point B
> is hard if you don't know the way. The problem is the multitude of ways you
> can go wrong. The ideal experience would be a big "download Clojure starter
> kit" right on the clojure.org homepage, that would install leiningen, and
> an IDE with leiningen integration, and display a quick guide how to set up
> a project and run it.
>
> Jules
>
> On Friday, February 15, 2013 12:34:26 AM UTC+1, vemv wrote:
>>
>> If this does not work for you, you can help everyone by opening an issue
>> at the Leiningen bug tracker:
>>
>> Make sure java and curl are correctly installed
>> Run the corresponding (unix or Windows) lein install script
>> Now you should be able to run lein repl, lein new, etc
>>
>> On Friday, February 15, 2013 12:26:15 AM UTC+1, Jules wrote:
>>>
>>> Sure, but you have assumed that you have a perfectly working clojure
>>> environment set up. *That* is the hard part.
>>>
>>> On Friday, February 15, 2013 12:19:34 AM UTC+1, vemv wrote:

 I never tried out core.logic. This is how I just got it "installed" in
 less than a minute. Really no magic here:

 lein new foo; cd foo
 # google "core.logic", grab the dependencies vector 
 ([org.clojure/core.logic
 "0.7.5"]), attach it to your project.clj
 lein repl

 (use 'clojure.core.logic)(run* [q]
   (== q true))


 Same principle for practically every single Clojure lib.

 On Friday, February 15, 2013 12:08:18 AM UTC+1, Jules wrote:
>
> You are certainly not alone. Learning the language and concepts is
> very easy for me, but the sysadmin stuff to get set up is so much harder.
> Believe it or not, I had much more trouble with installing core.logic than
> understanding it. It doesn't end either, you bump into more problems once
> you try to do something interesting. Just try e.g. to call the LLVM C api
> from Clojure, I have not succeeded to this day (was trying to implement a
> LLVM backend for Clojurescript). You have the same problem with many open
> source projects, they are simply not focused on user friendliness, it's
> certainly not a Clojure specific problem. If you are on Windows the
> problems are 10x worse. Compare this with e.g. Visual Studio. You install
> it, and everything just works. Package manager, calling C functions,
> powerful GUI libraries, IDE with debugger, syntax highlighting,
> autocomplete, etc. From the first minute on you are programming rather 
> than
> sysadmining. I wish we had the same experience for Clojure.
>
> On Thursday, February 14, 2013 7:42:57 PM UTC+1, BJG145 wrote:
>>
>> Having studied Lisp decades ago I like the look of Clojure a lot. But
>> as a complete newbie when it comes to modern software development, I'm
>> exasperated by what strikes me as a very difficult and primitive set of
>> tools to get started. I keep seeing "Leinigen, Leinigen", and the 
>> Leinigen
>> homepage boasts that "Leinigen offers the easiest way to get started with
>> Clojure", but this simply isn't true. The easiest way to get started with
>> Clojure that I've come across so far is Inte

Re: [ANN] analyze 0.3.0 - Hygienic transformation

2013-02-14 Thread Ambrose Bonnaire-Sergeant
Jonas already has another project which uses analyze
https://github.com/jonase/eastwood

On Fri, Feb 15, 2013 at 12:19 PM, ronen  wrote:

>
> It looks as if https://github.com/jonase/kibit/ is a lint/check style
> tool that only reads the source code, this limits its utilization:
>
> "Kibit 
> reads
>  source
> code without any macro expansion or evaluation. A macro can therefor easily
> invalidate a rule. Also, kibit will not know if the symbol + in the form (+
> x 1) actually refers to a local or to a function in a namespace other
> than clojure.core. Expect some false positives."
>
> So there is a place for an AST based one (more similar to findbugs I guess)
>
> On Wednesday, February 13, 2013 9:21:52 AM UTC+2, Ambrose
> Bonnaire-Sergeant wrote:
>
>> IMO that's the job of a "linter"-style tool, which can be written easily
>> with `analyze`.
>>
>> On Tue, Feb 12, 2013 at 11:58 PM, Michael Wood  wrote:
>>
>>> It might be useful, though, to be able to enable warnings for shadowed
>>> variables.
>>>
>>> On 12 February 2013 17:38, Timothy Baldridge  wrote:
>>> > This sort of pattern is used quite a lot in clojure (even in core):
>>> >
>>> > (let [data (if (string? data) (read-string data) data)
>>> >   data (if (string? (first data)) (first data) (next data))
>>> >   data (if (string? (first data)) (first data) (next data))]
>>> >  data)
>>> >
>>> > Throwing exceptions on overridden variable names would not only break
>>> > Clojure code, but also is very "non-lispy".
>>> >
>>> > Timothy
>>> >
>>> >
>>> >
>>> > On Tue, Feb 12, 2013 at 6:31 AM, AtKaaZ  wrote:
>>> >>
>>> >> it makes sense to not throw now that I think about it, when using "_"
>>> >> instead of "a"
>>> >> I'm also thinking of cases like:
>>> >> => (let [a 1]
>>> >>  (let [b 2 a 3]
>>> >>(println a b)))
>>> >> 3 2
>>> >> nil
>>> >>
>>> >> is there something that would let me know I'm overwriting "a" ? I
>>> figure
>>> >> if something like this would slip by would be tough to track down
>>> >>
>>> >>
>>> >> On Tue, Feb 12, 2013 at 1:46 PM, Michael Wood 
>>> wrote:
>>>
>>> >>>
>>> >>> On 12 February 2013 12:28, AtKaaZ  wrote:
>>> >>> > what would this do:
>>> >>> >
>>> >>> > (let [a 1, a 2] a)
>>> >>> > becomes:
>>> >>> > (let [a 1, a123 2] a)
>>> >>> > or
>>> >>> > (let [a 1, a123 2] a123)
>>> >>> > or
>>> >>> > exception[I prefer]
>>> >>>
>>> >>> It would be the second option, i.e.:
>>> >>>
>>> >>> (let [a 1, a123 2] a123)
>>> >>>
>>> >>> The original code is valid, so it would not throw an exception.
>>> >>>
>>> >>> > On Tue, Feb 12, 2013 at 7:10 AM, Ambrose Bonnaire-Sergeant
>>> >>> >  wrote:
>>> >>> >>
>>> >>> >> Processing a hygienic AST relieves the burden of worrying about
>>> >>> >> shadowing
>>> >>> >> of locals.
>>> >>> >>
>>> >>> >> Wherever a binding would normally be shadowed, it is instead
>>> renamed
>>> >>> >> to a
>>> >>> >> local binding currently not in scope.
>>> >>> >>
>>> >>> >> eg. (let [a 1, a a] a)
>>> >>> >>
>>> >>> >> becomes
>>> >>> >>
>>> >>> >> (let [a 1, a123 a] a123)
>>> >>> >>
>>> >>> >> It can be useful for those processing Clojure's analysis results.
>>> >>> >>
>>> >>> >> Thanks,
>>> >>> >> Ambrose
>>> >>> >>
>>> >>> >>
>>> >>> >> On Tue, Feb 12, 2013 at 1:54 AM, kovas boguta <
>>> kovas@gmail.com>
>>>
>>> >>> >> wrote:
>>> >>> >>>
>>> >>> >>> What is a hygienic AST?
>>> >>> >>>
>>> >>> >>> Thanks
>>> >>> >>> k
>>> >>> >>>
>>> >>> >>>
>>> >>> >>> On Sun, Feb 10, 2013 at 10:45 PM, Ambrose Bonnaire-Sergeant
>>> >>> >>>  wrote:
>>> >>> >>> > Hi everyone,
>>> >>> >>> >
>>> >>> >>> > Happy to release analyze 0.3.0 with new hygienic code
>>> >>> >>> > transformation
>>> >>> >>> > capabilities.
>>> >>> >>> >
>>> >>> >>> > [analyze "0.3.0"]
>>> >>> >>> >
>>> >>> >>> > In a line:
>>> >>> >>> >
>>> >>> >>> > analyze.hygienic=> (-> (ast (let [a 1 a a b a a a] a)) ast-hy
>>> >>> >>> > emit-hy)
>>> >>> >>> > ((fn* ([] (let* [a 1 a2921 a b a2921 a2922 a2921] a2922
>>> >>> >>> >
>>> >>> >>> > Hygienic AST's have enabled large performance boosts in
>>> core.typed.
>>> >>> >>> > I'm
>>> >>> >>> > excited to see how it could
>>> >>> >>> > be as useful to others.
>>> >>> >>> >
>>> >>> >>> > Note: "hygienic" AST's (those transformed with
>>> >>> >>> > `analyze.hygienic/ast-hy` can
>>> >>> >>> > be printed normally with `analyze.emit-form/emit-form`, and
>>> >>> >>> > hygienically
>>> >>> >>> > with `analyze.hygienic/emit-hy`.
>>> >>> >>> >
>>> >>> >>> > https://github.com/frenchy64/**analyze
>>> >>> >>> >
>>> >>> >>> > Thanks,
>>> >>> >>> > Ambrose
>>> >>> >>> >
>>> >>> >>> > --
>>> >>> >>> > --
>>> >>> >>> > You received this message because you are subscribed to the
>>> Google
>>> >>> >>> > Groups "Clojure" group.
>>> >>> >>> > To post to this group, send email to clo...@googlegroups.com
>>>
>>> >>> >>> > Note that posts from new members are moderated - please be
>>> patient
>>> >>> >>> >