Re: Lack in the documentation

2012-02-17 Thread Sean Corfield
On Fri, Feb 17, 2012 at 4:57 AM, abaitam  wrote:
> a) All those concrete things around you look like objects that has
> properties and actions:

I don't think that's true for a lot of brand new programmers. It's
true for Java programmers because everything is an object in their
world. But I deal with communities that don't do OOP and for them OOP
is not an easy sell.

> Advocating Clojure to computer science students (the future generation of
> developers) and professors has much better chances of success than to most
> experienced developers.

When I went thru university (in the early 80's), functional
programming was the default. It's interesting to watch Abelson &
Sussman's lectures in the context of the OO-focused world of today...

> - This Clojure-IDE is actually Eclipse for Clojure (which integrates
> Clojure, Counterclockwise and lein libraries - not as external tools)

Hang on, you were advocating Clojure for non-Java devs, yes? Yet you
want to inflict Eclipse on them? I'm only half-joking here. Non-Java
developers are going to want to use something lightweight and
simple... that's not Eclipse (it's not Emacs either)... not sure what
is the best route here (Clooj?).

|> literate programming for the more
> advanced code like those from Nurallah Nakkaya.

I think Literate Programming is a very specialized niche. I know
advocates believe it's one of the best ways to write code but I don't
believe it's natural for n00bs...

> developers in the community start saving the REPL logs and posting them as
> gists or in pastebins in addition to hosting the finished code. These has
> more teaching value with less effort than screencasts. They would be more
> helpful to understand how the code was written and help newcomers learn to
> "think functionally".

That's a good suggestion and it follows the REPL-first mode of
development - and it would work for folks who aren't writing
production code...
-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

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

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


Re: Clojure online university

2012-02-17 Thread Devin Walters
I'll add a +1 to this. It seems like a great way to keep a stream of competent, 
hireable (from a business perspective) Clojure programmers flowing. I think it 
lowers some concerns for businesses considering adoption. Beyond that, even if 
a student were to go and program in another language, I have a feeling that the 
quality of Clojure U alumni would be above average. Programming in general is 
better off if something like this takes off in our community.

'(Devin Walters)

On Feb 16, 2012, at 4:01 PM, Sean Corfield  wrote:

> On Thu, Feb 16, 2012 at 1:57 AM, Peter Hanak  wrote:
>> If someone in the community is thinking about something like this, and
>> needs any help please let me know.
> 
> Something like this, from the author of Clojure in Action, Amit Rathore:
> 
> http://codelesson.com/courses/view/introduction-to-clojure
> -- 
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
> 
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

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


Re: Google Summer of Code 2012 - any mentors?

2012-02-17 Thread Devin Walters
+1, would love to help in any way I can

'(Devin Walters)

On Feb 17, 2012, at 4:41 PM, Peter Hanak  wrote:

> another +1 here
> 
> On Feb 14, 3:23 am, Simone Mosciatti  wrote:
>> More students
>> +1
>> 
>> On Feb 9, 9:54 am, Baishampayan Ghose  wrote:
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> Alexander,
>> 
>>> A discussion is currently ongoing in the Clojure Dev mailing list.
>> 
>>> We are still waiting for someone from Clojure/core to chime in.
>> 
>>> Regards,
>>> BG
>> 
>>> On Thu, Feb 9, 2012 at 8:53 PM, Alexander Yakushev
>> 
>>>  wrote:
 Hello,
>> 
 I am wondering if there is there anybody willing to take part in this
 year's GSoC as a mentor? I would be happy to contribute this summer's
 time to hacking Clojure and there are probably more students that
 would.
>> 
 Best regards,
 Alexander
>> 
 --
 You received this message because you are subscribed to the Google
 Groups "Clojure" group.
 To post to this group, send email to clojure@googlegroups.com
 Note that 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
>> 
>>> --
>>> Baishampayan Ghose
>>> b.ghose at gmail.com
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

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


Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread Cedric Greevey
I suggest simply skipping the size comparison if either side is an
instance of the class LazySeq. Even for finite seqs this saves
traversing each seq twice.

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


Re: Google Summer of Code 2012 - any mentors?

2012-02-17 Thread Peter Hanak
another +1 here

On Feb 14, 3:23 am, Simone Mosciatti  wrote:
> More students
> +1
>
> On Feb 9, 9:54 am, Baishampayan Ghose  wrote:
>
>
>
>
>
>
>
> > Alexander,
>
> > A discussion is currently ongoing in the Clojure Dev mailing list.
>
> > We are still waiting for someone from Clojure/core to chime in.
>
> > Regards,
> > BG
>
> > On Thu, Feb 9, 2012 at 8:53 PM, Alexander Yakushev
>
> >  wrote:
> > > Hello,
>
> > > I am wondering if there is there anybody willing to take part in this
> > > year's GSoC as a mentor? I would be happy to contribute this summer's
> > > time to hacking Clojure and there are probably more students that
> > > would.
>
> > > Best regards,
> > > Alexander
>
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Clojure" group.
> > > To post to this group, send email to clojure@googlegroups.com
> > > Note that 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
>
> > --
> > Baishampayan Ghose
> > b.ghose at gmail.com

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


Re: ClojureScript def, vars, and binding

2012-02-17 Thread David Nolen
On Fri, Feb 17, 2012 at 1:37 PM, Brandon Bloom  wrote:

>  The problem is dealing with with asynchronous code, right? Not capturing
>> / restoring dynamic bindings.
>>
>
> No, the problem is that there is no mechanism to capture and restore
> dynamic bindings.
>
> This is a shortcoming irrespective of asynchronous code.
>

I think the question is whether ClojureScript needs to support bound-fn at
all. But maybe it really is useful in a single-threaded environment! :)

I looked over your implementation again. It looks like the beginning of
interesting line of investigation. Your implementation will likely be
*dramatically* slower (I would not be surprised if it's >100X slower). You
should test this and consider ways to decrease the impact. Would also be
useful to know the performance impact on a common use case - binding fns.

Also this seems like yet another breaking ClojureScript change.

David

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

Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread David Powell
> Not really viable. What if the first item is realized and the rest
> aren't?

Ah yeah - actually there are loads of reasons that it wouldn't work...

-- 
Dave

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


Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread Alan Malloy
On Feb 17, 1:34 pm, David Powell  wrote:
> > Lazy sequences implement java.util.List, which has a .size method.
> > clojure.lang.APersistentVector/doEquiv (and doEquals) attempts to
> > optimize when it sees it is being compared to something with a .size
> > or .count method, by comparing sizes before doing the hard work of
> > comparing elements. But this is not much of an optimization when
> > the .size method is infinitely slow! Perhaps an additional test for
> > lazy sequences should be added to these methods, but I'm certain the
> > issue is more complicated than it appears after my cursory
> > exploration, so that may well have other issues.
>
> Hmm, I suppose the Java equivalent of a clojure.core/realized? check
> could be done first, and the count/size not compared if the collection
> isn't realized?
>
> So basically, insert a check for:
> (obj instanceof IPending && !((IPending)obj).isRealized())
>

Not really viable. What if the first item is realized and the rest
aren't?

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


Re: Problem with the Chas Emerick: "Modeling the world ..." video

2012-02-17 Thread Stuart Sierra
Chris Redinger and Alan Dipert are working with ConFreaks (who did the 
recording) to get this fixed.

Thanks for your patience, everyone.

-Stuart Sierra
clojure.com

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

tools.logging question

2012-02-17 Thread Don Jackson

I would like to conditionally generate log statements based on run-time checks 
of various application-specific info.

I note  the following:

Logging levels are specified by clojure keywords corresponding to the values 
used in log4j and commons-logging:
:trace, :debug, :info, :warn, :error, :fatal
log
macro
Usage: (log level message)
…
Evaluates and logs a message only if the specified level is enabled. 

So, it occurs to me that for the level argument to log, I could pass in a 
function that would figure out if I really wanted to log anything right then, 
or not.

In the case that I *do* want to log something, that function would return the 
log level, e.g. :info  (this part seems to work fine…)

But what could my function return if it didn't want anything to be logged at 
this point?

Any log level beneath the current level in effect would seem to work, but 
figuring that out feels hackish, and what if the lowest level of logging 
(:trace ?) is enabled, then what?
Nil and/or false did not work at all in my test!

Is there something like a :noop level, that would never be enabled, and could 
be returned by my function whenever it decided it did not want the log to 
happen?

Obviously/alternately I could wrap all my logging in

(when (log-decision args) (log :level "message"))

But right now I'd rather do all this with just the log call,and I'm hoping 
there is already a way to do what I ask above, or if not, willingness to add 
something like a :noop level 

Don









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

Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread Michael Gardner
On Feb 17, 2012, at 2:29 PM, Alan Malloy wrote:

> Lazy sequences implement java.util.List, which has a .size method.
> clojure.lang.APersistentVector/doEquiv (and doEquals) attempts to
> optimize when it sees it is being compared to something with a .size
> or .count method, by comparing sizes before doing the hard work of
> comparing elements. But this is not much of an optimization when
> the .size method is infinitely slow! Perhaps an additional test for
> lazy sequences should be added to these methods, but I'm certain the
> issue is more complicated than it appears after my cursory
> exploration, so that may well have other issues.

Thanks for the explanation; I guessed it might be something like that. It seems 
a dubious optimization to do an initial size check on collections for which 
size/count are O(n), even when n isn't infinite!

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


Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread David Powell
> Lazy sequences implement java.util.List, which has a .size method.
> clojure.lang.APersistentVector/doEquiv (and doEquals) attempts to
> optimize when it sees it is being compared to something with a .size
> or .count method, by comparing sizes before doing the hard work of
> comparing elements. But this is not much of an optimization when
> the .size method is infinitely slow! Perhaps an additional test for
> lazy sequences should be added to these methods, but I'm certain the
> issue is more complicated than it appears after my cursory
> exploration, so that may well have other issues.

Hmm, I suppose the Java equivalent of a clojure.core/realized? check
could be done first, and the count/size not compared if the collection
isn't realized?

So basically, insert a check for:
(obj instanceof IPending && !((IPending)obj).isRealized())

-- 
Dave

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


Re: Lazy loading of doms

2012-02-17 Thread David Nolen
On Fri, Feb 17, 2012 at 3:49 PM, Brent Millare wrote:

> The computation is happening server side. From what you said, I think
> XMLHttpRequest is what I need. Also from what your saying, it sounds like
> there isn't any clojurescript specifics here, its all in the realm of
> javascript. Is that right? This sounds like a powerful technique. What
> about considering if the data should be clojure literals? Any special
> considerations?


That's right and yes, it is powerful. If the data is Clojure literals use
the cljs.reader once you receive the data from XMLHttpRequest. There's
probably no reason to use XMLHttpRequest directly, I would investigate the
options provided to you via Google Closure.

David

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

Re: Lazy loading of doms

2012-02-17 Thread Brent Millare
The computation is happening server side. From what you said, I think 
XMLHttpRequest is what I need. Also from what your saying, it sounds like 
there isn't any clojurescript specifics here, its all in the realm of 
javascript. Is that right? This sounds like a powerful technique. What 
about considering if the data should be clojure literals? Any special 
considerations?

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

Re: Lack in the documentation

2012-02-17 Thread Jon Seltzer
1. You can't do GUI or game development without using Java.
A: Yes, that's true.  Clojure was designed to use the vast libraries
of Java.  Java documentation is superb so if you want to do anything
graphical, I'd suggest the Java tutorial and JavaFX especially for all
things graphical.  It's really very good.

2. You don't want to learn Java just to learn Clojure.
A:  Well this is really up to you.  I think Clojure is great for many
things and many great libraries have been written (to numerous to
mention) and many of those libraries are wrappers on Java libraries.
Frankly, Clojure's Java interop is so good I don't see a need to
wrap.  There's a great presentation by Stuart H. about Clojure being a
better Java then Java.

3. This means Clojure is losing mindshare.
A:  So really this is a question of appeal.  What attracts developers
to a new programming language other than the language itself?
Producing a sanctioned tutorial like the Sun(Oracle) Java Tutorial
would be good.  A good video introduction to the language would be
good (Have that.  See Rich's presentations, they're awesome).
ClojureDocs.org is an excellent reference.

4. I sense a general frustration with having to learn something new.
A:  I'm not sure what can be done about this.  I would encourage you
to keep at it and things will start to fall into place.  Lastly, I'd
ask you to reconsider your stance on Java.  There really is a wealth
of functionality you're giving up.

On eb 14, 9:50 pm, g1i1ch  wrote:
> I just wanted to put a shout out to the major clojure guys out there.
> I've tried several times to learn the language, but I can't get passed
> the normal lispy stuff to a serious program. Like a game or GUI app.
> The reason why is because of something I quickly realized. It seems
> that to fully learn clojure, you first must know java. You can see it
> especially in the documentation which is fully java programmer
> focused. My problem is that I don't know java and I really don't have
> the time to or the desire to learn java just to learn clojure.
>
> I'm pretty sure I'm not the only one, and it means there may be scores
> of people out there just waiting to learn clojure but find it an
> uphill battle. It kinda limits how far the language will spread. Just
> wanted to bring attention to it because it's a really awesome
> language. And, I really want to be able to use it, and I want it to be
> more widespread than it is. You have a Clojure for Java Programmers,
> why not a Clojure for Non-Java Programmers?
>
> 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


Re: ClojureScript def, vars, and binding

2012-02-17 Thread Brandon Bloom

>
> The problem is dealing with with asynchronous code, right? Not capturing / 
> restoring dynamic bindings.
>

No, the problem is that there is no mechanism to capture and restore 
dynamic bindings.

This is a shortcoming irrespective of asynchronous code.

It just so happens that such a mechanism is necessary for writing code 
which sets a dynamic binding, then schedules asynchronous code which uses 
that binding.

Notice my example from above, here it is again in Clojure:

user=> (def ^:dynamic x "root")
#'user/x
user=> x
"root"
user=> #'x
#'user/x
user=> ((binding [x "dynamic"] (fn [] x)))
"root"
user=> ((binding [x "dynamic"] (bound-fn [] x)))
"dynamic"

Notice two things about this code:

1) It is completely synchronous and single-threaded.
2) Now works identically in both Clojure and my ClojureScript branch.

See (doc bound-fn)

You suggested that there is insufficient motivation for my changes in the 
face of CPS / delimited continuations. My question to you is: How would you 
implement bound-fn without doing exactly what my code already does?

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

Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread Alan Malloy
On Feb 17, 10:54 am, Michael Gardner  wrote:
> On Feb 17, 2012, at 12:32 PM, Bill Smith wrote:
>
> > It might help to know that (= (range) (range)) does not terminate either.
>
> Of course, since a pairwise sequential comparison (what I assume is going on 
> under the hood) will never find a non-matching pair.
>
> > It appears that the = operator wants to fully evaluate the second argument 
> > before comparing to the first.  Since (range) is infinite, it hangs.
>
> Yes, that is what appears to be happening. The question is: why? Why does it 
> only do this to the second argument? Why does (= v s) for any vector `v' and 
> any infinite lazy sequence `s' not terminate, while (= s v) does?

Lazy sequences implement java.util.List, which has a .size method.
clojure.lang.APersistentVector/doEquiv (and doEquals) attempts to
optimize when it sees it is being compared to something with a .size
or .count method, by comparing sizes before doing the hard work of
comparing elements. But this is not much of an optimization when
the .size method is infinitely slow! Perhaps an additional test for
lazy sequences should be added to these methods, but I'm certain the
issue is more complicated than it appears after my cursory
exploration, so that may well have other issues.

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


Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread Michael Gardner
On Feb 17, 2012, at 12:32 PM, Bill Smith wrote:

> It might help to know that (= (range) (range)) does not terminate either.

Of course, since a pairwise sequential comparison (what I assume is going on 
under the hood) will never find a non-matching pair.

> It appears that the = operator wants to fully evaluate the second argument 
> before comparing to the first.  Since (range) is infinite, it hangs.

Yes, that is what appears to be happening. The question is: why? Why does it 
only do this to the second argument? Why does (= v s) for any vector `v' and 
any infinite lazy sequence `s' not terminate, while (= s v) does?

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


[ANN]: cljsh & repls 1.9.5

2012-02-17 Thread Frank Siebenlist
CLJSH & REPLS: "cljsh" is a lightweight client that sends clojure 
statements/files to a persistent repl-server "repls" for evaluation.

Release notes

Cljsh (>= 1.9.5) and repls (>= 1.9.5) have the following new features:

• cljsh automatically finds the repls-server that is started for the project, 
so no need to keep track of port numbers and such. Note that cljsh and repls 
both should be started from within the project's directory tree for this to 
work. A single project can also be designated as "global" with cljsh (-G), such 
that any subsequent cljsh invocation can indicate (-g) that it wants to 
interact with that global-project's repls-server no matter from which directory 
cljsh is started. In that way, a single project can be used as the scripting 
environment for all general clojure scripts os-wide.

• self-update feature in cljsh (-U) that allows you to automagically 
download&install the latest stable cljsh version from github. (provided you 
installed cljsh in a place where cljsh can r&w).

• update feature in cljsh for the lein plugin "repls" (-u) that automagically 
shows the available version for the lein plugin at clojars and will 
subsequently uninstall the current one and install the chosen one. (you may 
want to stay away from the old and the SNAPSHOT versions...)

• automatic starting from cljsh (-l) of the repls-server + console in a 
separate terminal session (when it's not running yet) - no more need to start 
the repls-server with "lein repls" in a new terminal session by hand.

• Stopping of the repls-server thru cljsh (-L). (stopping and restarting (-Ll) 
gives you essentially a restart of your project's jvm)

• The cljsh & repls combination are tested to install and run the cljsh-test.sh 
script successfully on both MacOSX 10.7.3 and LUbuntu 11.10 (log of the MacOSX 
install session is at "https://gist.github.com/1854631";, and the Lubuntu 
install log is at "https://gist.github.com/1842625"; - for Ubuntu, don't forget 
to set the XTERM environment variable to enable the auto-start of the 
repls-server.)

• started to look at nrepl as a possible repl-server for cljsh - the tty 
transport-module looks promising - seems to work out-of-the-box with cljsh's 
interactive repl ("cljsh -s nrepl-port-number -r") - for non-interactive use, 
however, quite a few changes are needed (prompt printing, eval-result printing, 
stderr console-redirection, auto port config,...).

• See "cljsh -h" and "https://github.com/franks42/lein-repls"; for details and 
source code.

Enjoy, FrankS.

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


Re: Why does (= [] (range)) not terminate?

2012-02-17 Thread Bill Smith
It might help to know that (= (range) (range)) does not terminate either. 
 It appears that the = operator wants to fully evaluate the second argument 
before comparing to the first.  Since (range) is infinite, it hangs.

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

Re: Lazy loading of doms

2012-02-17 Thread Brent Millare
To be more clear about what I'm asking for, I'd like some simple sample 
code, or a guide which provides this.

Thanks

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

Re: Lazy loading of doms

2012-02-17 Thread David Nolen
When you inline expensive computations in script tags directly those will
delay loading of the page. For anything particularly expensive, I would
probably wait until the DOM is ready. If this calculation is happening
server side then prevent your script from delaying page load by
asynchronously calling the server via XMLHttpRequest.

Probably best to get a copy of JavaScript: The Definitive Guide if you need
more details on best practices.

David

On Fri, Feb 17, 2012 at 10:09 AM, Brent Millare wrote:

> Honestly I have no clue what to do. I'm new to javascript for webpage
> building. Before even trying to learn javascript I'm just wondering the
> approaches, pros/cons to do this. You'll have to elaborate a little bit, if
> you don't mind.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that 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

Why does (= [] (range)) not terminate?

2012-02-17 Thread Michael Gardner
I came across something interesting while working on some code posted in 
another thread: it seems (= [] (range)) does not terminate, while (= (range) 
[]) does. Why is 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


Re: noob question/request for guidance vis a vis connecting to SQL Server

2012-02-17 Thread Linus Ericsson
Hi! Long way!

To start with I would head for using webnoir+korma for starters. I think
its a better lighted up road for people to start with (eventually you could
dump the jvm after a while and run everything in node.js or something but
for now thats a risky road for someone new to the language IMO.)

Start with installing lein, then go to webnoir for getting a webserver up.
Then add korma and connect it to sql. You can use clojurescript for the
cool website but to run the backend in cljs seems a bit overwhelming for a
start.

Does that sound reasonable to start with? Once you have lein, noir is very
easy. Swank + slime is geat when you want to test the backend/sql
without the website first. Just ask if you have further questions, we try
to clean the way of mines as fast as we can with documentation and
everything.

/Linus
Den 17 feb 2012 15:06 skrev "VaedaStrike" :

> I'm really new to programmIng. Started in relational database design
> and got myself a SQLServer based database for which I want to create a
> web based clojure/clojurescript/clojurescriptone based front end. I
> started learning programming (oop) with vb.net and vs and got to
> realize that to get to where I want to be I have to be able to develop
> faster and better than vb could let me so I finally figured out how to
> get started with Emacs and am now stumbling through clojurescriptone
> via the emac repl (getting to this point has been a LONG journey for
> me).
>
> So where I'm at presently is trying to build forms etc in
> clojurescriptone that can be the front end for my database, using
> stored procedures.
>
> I have virtually no idea as to how to start this. Where in
> clojurescriptone would I place make the connection? I've been told
> that it would have something to do with remoting but I've never done
> anything like that and can't seem to find info via search engines.
> I've looked up what I can find in the wikibook about connecting to SQL
> Server
>
>
> http://en.wikibooks.org/wiki/Clojure_Programming/Examples/JDBC_Examples#Microsoft_SQL_Server
>
>  but aside from downloading the jdbc I'm lost
>
>  In the wikibooks article it states that the solution "depends on the
> Clojure Contrib library org.clojure/java.jdbc " but I, in my great
> nascent noobness, haven't the foggiest idea of how to, or where to,
> state the dependency in the clojurescript app (does it entail
> downloading files from org.clojure/java.jdbc??? If so where/how do I
> place them?). I'd also like to be able to test calls against my stored
> procedures in the/a repl (clojurescriptone or otherwise) but I just
> have no clue where to begin.
>
> Can any patient soul either tell me OR point me in the best dirrection
> to figire this 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 post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Re: Lack in the documentation

2012-02-17 Thread Linus Ericsson
A treasure!

I will from now on start to jot down whatever I do also.

/Linus

2012/2/16 Sean Neilan 

> Of course, I won't be able to write the entire Recipe Book by myself. I
> will contribute all the recipes I have discovered with test cases.
>
> On Thu, Feb 16, 2012 at 11:40 AM, Sean Neilan  wrote:
>
>> I'm working on something like this by keeping notes on everything I've
>> encountered so far in Clojure 1.3.0.
>>
>> Please understand that these are* personal notes* and as such are very,
>> very messy.
>>
>> http://seanneilan.com/Clojure.html
>>
>> When I have the time, I will volunteer to clean up my notes and turn it
>> into a Clojure 1.3.0 Recipe Book in the same vein as the Python
>> Documentation. It will be a mix of Java and Clojure that tells you what to
>> do and how to do it. No more no less.
>>
>> On Thu, Feb 16, 2012 at 11:16 AM, David Nolen wrote:
>>
>>> On Thu, Feb 16, 2012 at 12:04 PM, Gregg Williams >> > wrote:
>>>
 Would it kill somebody to write a library of simple functions that
 would answer most beginners' simple needs, then have it "blessed" as
 canonical? I'd write it myself, but I still don't know enough! If
 every beginner has to painfully figure these things out, most
 beginners are going to bail--which means that Clojure remains a niche
 language, unknown to a lot of people who could have brought their
 considerable creativity to the Clojure community.

>>>
>>> We are patiently waiting for *you* to do / start / lead this. If it's a
>>> real paint point for enough people - folks will happily contribute, you
>>> don't need to know / think of everything. I've found this to be case with
>>> ClojureScript, core.match, and core.logic. I'm working on ClojureScript
>>> support for core.match and core.logic and I happily welcome any patches
>>> that will make them work on the CLR.
>>>
>>> It's tiresome to hear people complain about something they do not
>>> contribute anything towards.
>>>
>>> David
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>
>>
>>
>   --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

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

Re: Lazy loading of doms

2012-02-17 Thread Brent Millare
Honestly I have no clue what to do. I'm new to javascript for webpage 
building. Before even trying to learn javascript I'm just wondering the 
approaches, pros/cons to do this. You'll have to elaborate a little bit, if 
you don't mind.

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

Re: Lazy loading of doms

2012-02-17 Thread David Nolen
I'm assuming you've put the script tag that waits for this computation
directly into the page?

On Fri, Feb 17, 2012 at 8:54 AM, Brent Millare wrote:

> I have web content that loads instantly except for a small section of it,
> which depends on high latency computations, that take a second to do. As of
> now, since the page only loads when everything is computed, the whole page
> takes a second to load. I'd like most of the page to load, then the slow
> section to load later, kinda like how large images are loaded on a page,
> but replace the image with plain html content. What's the right
> clojurescript way to provide lazy loaded, or at least delayed loaded
> content on a webpage? (Note I'm assuming javascript/clojurescript is the
> right approach to this. I don't think frames are supported in the future,
> for example its deprecated/not supported in html5)
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

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

Re: ClojureScript def, vars, and binding

2012-02-17 Thread David Nolen
On Thu, Feb 16, 2012 at 1:33 PM, Brandon Bloom  wrote:

> > A robust solution can be implemented via CPS transformation
>
> Forgive me for my ignorance, but how exactly would a CPS transformation
> enable one to capture and restore the current set of dynamic bindings?
>

The problem is dealing with with asynchronous code, right? Not capturing /
restoring dynamic bindings.

David

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

noob question/request for guidance vis a vis connecting to SQL Server

2012-02-17 Thread VaedaStrike
I'm really new to programmIng. Started in relational database design
and got myself a SQLServer based database for which I want to create a
web based clojure/clojurescript/clojurescriptone based front end. I
started learning programming (oop) with vb.net and vs and got to
realize that to get to where I want to be I have to be able to develop
faster and better than vb could let me so I finally figured out how to
get started with Emacs and am now stumbling through clojurescriptone
via the emac repl (getting to this point has been a LONG journey for
me).

So where I'm at presently is trying to build forms etc in
clojurescriptone that can be the front end for my database, using
stored procedures.

I have virtually no idea as to how to start this. Where in
clojurescriptone would I place make the connection? I've been told
that it would have something to do with remoting but I've never done
anything like that and can't seem to find info via search engines.
I've looked up what I can find in the wikibook about connecting to SQL
Server

http://en.wikibooks.org/wiki/Clojure_Programming/Examples/JDBC_Examples#Microsoft_SQL_Server

 but aside from downloading the jdbc I'm lost

 In the wikibooks article it states that the solution "depends on the
Clojure Contrib library org.clojure/java.jdbc " but I, in my great
nascent noobness, haven't the foggiest idea of how to, or where to,
state the dependency in the clojurescript app (does it entail
downloading files from org.clojure/java.jdbc??? If so where/how do I
place them?). I'd also like to be able to test calls against my stored
procedures in the/a repl (clojurescriptone or otherwise) but I just
have no clue where to begin.

Can any patient soul either tell me OR point me in the best dirrection
to figire this 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


Re: Lack in the documentation

2012-02-17 Thread Sean Neilan
I'm working on something like this by keeping notes on everything I've
encountered so far in Clojure 1.3.0.

Please understand that these are* personal notes* and as such are very,
very messy.

http://seanneilan.com/Clojure.html

When I have the time, I will volunteer to clean up my notes and turn it
into a Clojure 1.3.0 Recipe Book in the same vein as the Python
Documentation. It will be a mix of Java and Clojure that tells you what to
do and how to do it. No more no less.

On Thu, Feb 16, 2012 at 11:16 AM, David Nolen wrote:

> On Thu, Feb 16, 2012 at 12:04 PM, Gregg Williams 
> wrote:
>
>> Would it kill somebody to write a library of simple functions that
>> would answer most beginners' simple needs, then have it "blessed" as
>> canonical? I'd write it myself, but I still don't know enough! If
>> every beginner has to painfully figure these things out, most
>> beginners are going to bail--which means that Clojure remains a niche
>> language, unknown to a lot of people who could have brought their
>> considerable creativity to the Clojure community.
>>
>
> We are patiently waiting for *you* to do / start / lead this. If it's a
> real paint point for enough people - folks will happily contribute, you
> don't need to know / think of everything. I've found this to be case with
> ClojureScript, core.match, and core.logic. I'm working on ClojureScript
> support for core.match and core.logic and I happily welcome any patches
> that will make them work on the CLR.
>
> It's tiresome to hear people complain about something they do not
> contribute anything towards.
>
> David
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

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

Re: Lack in the documentation

2012-02-17 Thread Sean Neilan
Of course, I won't be able to write the entire Recipe Book by myself. I
will contribute all the recipes I have discovered with test cases.

On Thu, Feb 16, 2012 at 11:40 AM, Sean Neilan  wrote:

> I'm working on something like this by keeping notes on everything I've
> encountered so far in Clojure 1.3.0.
>
> Please understand that these are* personal notes* and as such are very,
> very messy.
>
> http://seanneilan.com/Clojure.html
>
> When I have the time, I will volunteer to clean up my notes and turn it
> into a Clojure 1.3.0 Recipe Book in the same vein as the Python
> Documentation. It will be a mix of Java and Clojure that tells you what to
> do and how to do it. No more no less.
>
> On Thu, Feb 16, 2012 at 11:16 AM, David Nolen wrote:
>
>> On Thu, Feb 16, 2012 at 12:04 PM, Gregg Williams 
>> wrote:
>>
>>> Would it kill somebody to write a library of simple functions that
>>> would answer most beginners' simple needs, then have it "blessed" as
>>> canonical? I'd write it myself, but I still don't know enough! If
>>> every beginner has to painfully figure these things out, most
>>> beginners are going to bail--which means that Clojure remains a niche
>>> language, unknown to a lot of people who could have brought their
>>> considerable creativity to the Clojure community.
>>>
>>
>> We are patiently waiting for *you* to do / start / lead this. If it's a
>> real paint point for enough people - folks will happily contribute, you
>> don't need to know / think of everything. I've found this to be case with
>> ClojureScript, core.match, and core.logic. I'm working on ClojureScript
>> support for core.match and core.logic and I happily welcome any patches
>> that will make them work on the CLR.
>>
>> It's tiresome to hear people complain about something they do not
>> contribute anything towards.
>>
>> David
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>
>
>

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

Re: ClojureScript def, vars, and binding

2012-02-17 Thread Brandon Bloom
> A robust solution can be implemented via CPS transformation

Forgive me for my ignorance, but how exactly would a CPS transformation 
enable one to capture and restore the current set of dynamic bindings?

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that 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

Mini-interview with William Byrd by Fogus

2012-02-17 Thread mnicky
In the next interview from the (take) series, Fogus interviewes William 
Byrd, which is talking about some suggestions for Clojure, Scheme and 
macros and his current work, among other things

Link: http://clojure.com/blog/2012/02/16/take5-william-byrd.html

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

Re: mini mud-client for within emacs-swank

2012-02-17 Thread George Oliver


On Feb 16, 5:03 am, bOR_  wrote:
> Started playing with getting an within emacs clojure-based mud client, but
> puzzling a bit with parsing the incoming stream. The below works (for
> emacs+swank-clojure 1.4.0), but puts a space between every character. When
> I try to solve that (for example by swapping "(print ..." with "(print
> (apply str ...", then incoming text is no longer automatically parsed into
> the repl.


I'm a beginner myself, but it looks to me like you're running into a
problem with the lazy seq returned by take. Don't you want to collect
every character into a buffer and then flush it once you hit an end of
line?

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


Re: Problem with the Chas Emerick: "Modeling the world ..." video

2012-02-17 Thread Jason Aeschliman
Likewise

On Feb 16, 8:43 am, Sergey Didenko  wrote:
> The same here.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that 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


Lazy loading of doms

2012-02-17 Thread Brent Millare
I have web content that loads instantly except for a small section of it, 
which depends on high latency computations, that take a second to do. As of 
now, since the page only loads when everything is computed, the whole page 
takes a second to load. I'd like most of the page to load, then the slow 
section to load later, kinda like how large images are loaded on a page, 
but replace the image with plain html content. What's the right 
clojurescript way to provide lazy loaded, or at least delayed loaded 
content on a webpage? (Note I'm assuming javascript/clojurescript is the 
right approach to this. I don't think frames are supported in the future, 
for example its deprecated/not supported in html5)

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

Re: Lack in the documentation

2012-02-17 Thread abaitam
It is clear that most Clojure documentation (books, tutorials, blog posts) 
address Java or other language developers. I am at chapter three of the 
"Clojure Programming" book and so far I have seen many snippets of Ruby and 
Python code. That's not necessarily wrong but obviously the 
book assumes you are a Java, Ruby or Python developer. AFAIK, all Clojure 
books do. There is no lack of documentation addressed to experienced 
developers. But there is indeed a lack of documentation that addresses 
people who are just starting programming? This is because, I suppose, many 
in the community probably believe that Clojure is not suitable as a first 
programming language. This has been discussed on the list before and some 
in the community believe it is and some don't. I, for one, believe that a 
new developer or a computer science student should be able to go a long way 
learning Clojure and write applications with Clojure alone without any 
mention of interop until the very end. Such a book would be useful to 
anyone whether he is familiar with another programming language or not.

However, I think it is more of an advocacy problem that appears as a 
documentation one. It is as if the community is advocating Clojure only to 
existing developers. But Clojure is a hard sell to existing developers 
especially Java developers. It is better to advocate Clojure to 
new generations of developers, computer science students and professors and 
even power computer users (like Excel programmers!). These are not served 
as much with books and tutorials while existing developers are served very 
well. 

Why is Clojure hard to sell to Java developers? 

When Clojurians write about Java it is as if there is a love-hate 
relationship to Java and they have a conflicting message. First we tell 
them how bad Java (or their language is): "It is fine to hate Java and love 
the JVM"; Java is mutable and uncontrolled mutability is bad; it is 
imperative; Java's time model is broken and so on. But then after stating 
all the bad things about Java, we tell these enterprise guys who have 
invested a lot in Java: "wait, you can write Java in Clojure better than in 
Java". "You can still use all the (mutable, imperative) Java you have 
written over the years in Clojure." 

But I doubt that enterprise people and developers would do so for many 
reasons:

a) All those concrete things around you look like objects that has 
properties and actions: this keyboard I am using; that car in the street, 
that toaster. It is very easy to sell OOP when you explain it starting with 
the concrete going to the abstract to a new developer and it sounds very 
natural. Most early examples in OOP books (about cars, people and 
things) sound immediately natural and practical. It doesn't matter that 
this model or analogy breaks very soon; the developer will have already 
been sold on the idea. That's what most existing developers are used to. In 
contrast, it is hard to "think" functionally about practical matters and 
most early examples in functional language books are about numbers and 
mathematics that are not "practical" to a new developer. b) Similarly, the 
imperative style of programming feels more natural as well to a junior 
developer and very similar to how "we do things in life". Algorithms, to 
them, are just recipes of steps; not mapping, filtering and reducing data 
structures which sounds "mathematical" (the horror). Just reference that 
library; do this, that, then a loop over a collection there and you're done 
and can go home and sleep all night. Functional programming, on the other 
hand, is high on the abstraction level from the very beginning; but the 
average developer doesn't care about high levels of abstraction. At every 
corner, a newcomer has to change the way he thinks to grok Clojure. 
Everything is completely different; even adding two numbers (+ 1 2) looks 
weird to what people are used to. c) It is easier to get used to Java 
syntax and it reads easily from the beginning. It takes longer time, 
probably months, and perseverance to get used to reading Clojure code. Try 
to read aloud some Java code and some Clojure code; the later sounds like 
reading algebraic equations; the former reads like sentences (albeit 
missing prepositions, ands and buts..). You scroll pages skimming Java code 
but you need to ponder for sometime to understand a Clojure function or a 
macro.  It is as if there a hill on the road to learning the two languages; 
the hill is at the very beginning on the road to Clojure and it is at the 
end for Java. Iff a newcomer perseveres he will climb the hill and 
eventually get used to reading Clojure code and will appreciate how pithy 
it is. He will be shocked when he realizes that all he needs 
one-page cheat-sheet (for the language and most of its functions) instead 
of a huge reference for his language syntax and APIs. But that was a very 
big IF. Clojure is completely different in style, syntax and way o

ClojureScript One in Eclipse

2012-02-17 Thread turcio
Hi,
I'm trying to run ClojureScript One using CCW plugin in Eclipse. I
created a new project and imported all the source code into it. Then I
added folders to the build path that reflect the following
configuration from project.clj:

:git-dependencies [["https://github.com/clojure/clojurescript.git";
"886d8dc81812962d30a741d6d05ce9d90975160f"]
 ["https://github.com/levand/domina.git";
"8933b2d12c44832c9bfaecf457a1bc5db251a774"]]
  :extra-classpath-dirs [".lein-git-deps/clojurescript/src/clj"
 ".lein-git-deps/clojurescript/src/cljs"
 ".lein-git-deps/domina/src/cljs"
 "src/app/cljs"
 "src/app/cljs-macros"
 "src/lib/clj"
 "src/lib/cljs"
 "templates"]

I also executed "lein bootstrap" and added libraries to the build path
in Eclipse.

Now I'm running the app by right clicking on project folder, then Run
as->Clojure application. In repl I execute: (in-ns 'one.sample.repl)
(dev-server)). The browser shows up the homepage, but when I click on
Development tab the exception listed below occurs. Some files
ClojureScript fiiles are generated but not all. Also empty "out"
directory is created in the root folder.

Any ideas?

Thanks,
Daniel



2012-02-17 12:06:17.393:WARN::/development
java.lang.AssertionError: Assert failed: Can't recur here|frame
at cljs.compiler$fn__877.invoke(compiler.clj:762)
at clojure.lang.MultiFn.invoke(MultiFn.java:177)
at cljs.compiler$analyze_seq.invoke(compiler.clj:1033)
at cljs.compiler$analyze.invoke(compiler.clj:1086)
at cljs.compiler$analyze.invoke(compiler.clj:1079)
at cljs.compiler$fn__801.invoke(compiler.clj:606)
at clojure.lang.MultiFn.invoke(MultiFn.java:177)
at cljs.compiler$analyze_seq.invoke(compiler.clj:1033)
at cljs.compiler$analyze.invoke(compiler.clj:1086)
at cljs.compiler$analyze.invoke(compiler.clj:1079)
at cljs.compiler$parse_invoke$fn__1014.invoke(compiler.clj:979)
at clojure.core$map$fn__3811.invoke(core.clj:2432)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.Cons.next(Cons.java:39)
at clojure.lang.PersistentVector.create(PersistentVector.java:50)
at
clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:
31)
at clojure.core$vec.invoke(core.clj:345)
at cljs.compiler$parse_invoke.invoke(compiler.clj:979)
at cljs.compiler$analyze_seq.invoke(compiler.clj:1034)
at cljs.compiler$analyze.invoke(compiler.clj:1086)
at cljs.compiler$analyze.invoke(compiler.clj:1079)
at cljs.compiler$fn__801.invoke(compiler.clj:607)
at clojure.lang.MultiFn.invoke(MultiFn.java:177)
at cljs.compiler$analyze_seq.invoke(compiler.clj:1033)
at cljs.compiler$analyze.invoke(compiler.clj:1086)
at cljs.compiler$analyze.invoke(compiler.clj:1079)
at cljs.compiler$parse_invoke$fn__1014.invoke(compiler.clj:979)
at clojure.core$map$fn__3811.invoke(core.clj:2432)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:466)
at
clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:
31)
at clojure.core$vec.invoke(core.clj:345)
at cljs.compiler$parse_invoke.invoke(compiler.clj:979)
at cljs.compiler$analyze_seq.invoke(compiler.clj:1034)
at cljs.compiler$analyze.invoke(compiler.clj:1086)
at cljs.compiler$analyze.invoke(compiler.clj:1079)
at cljs.compiler$parse_invoke$fn__1014.invoke(compiler.clj:979)
at clojure.core$map$fn__3811.invoke(core.clj:2432)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.Cons.next(Cons.java:39)
at clojure.lang.PersistentVector.create(PersistentVector.java:50)
at
clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:
31)
at clojure.core$vec.invoke(core.clj:345)
at cljs.compiler$parse_invoke.invoke(compiler.clj:979)
at cljs.compiler$analyze_seq.invoke(compiler.clj:1034)
at cljs.compiler$analyze.invoke(compiler.clj:1086)
at cljs.compiler$analyze.invoke(compiler.clj:1079)
at cljs.compiler$analyze_file.invoke(compiler.clj:1105)
at cljs.compiler$compile_file_STAR_.invoke(compiler.clj:1136)
at cljs.compiler$compile_file.invoke(compiler.clj:1184)
at cljs.compiler$compile_root.invoke(compiler.clj:1244)
at cljs.closure$compile_dir.invoke(closure.clj:304)
at cljs.closure$fn__1377.invoke(closure.clj:336)
at cljs.closure$fn

"lein run" takes an excessive amount of time...

2012-02-17 Thread John Szakmeister
It appears that when executing 'lein run' that it's examining
dependencies and/or contacting Maven repositories.  This overhead is
adding a considerable amount of time to lein run.  Firing things up
from the command line takes *significantly* less time (>30s vs 4-5s).

Has anyone else seen this behavior?  I'd rather 'lein run' just run
and not do any checking of dependencies.

Thanks for the help!

-John

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


Re: mini mud-client for within emacs-swank

2012-02-17 Thread bOR_
Solved it. I had to replace the "(print (take.." statement with the 
following: 

(doseq [c (remove #{\return} (map char (take-while #(not= % -1) (repeatedly 
#(.read (.getInputStream avendar))] (print c))

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that 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