I've also added an (exit-dr) function that allows you to exit the
debug-repl all the way, if you are nested many levels.
You can get it here:
http://clojars.org/org.clojars.gjahad/debug-repl
(Use the 0.2.0-SNAPSHOT of the debug-repl if you are not using the
latest Clojure with the new env arg)
You can generate a Java class with a main method (as you have done),
or you can use clojure.main:
http://clojure.org/repl_and_main
On Jan 31, 2:32 pm, Wardrop t...@tomwardrop.com wrote:
I'm having trouble finding any resources on the net for telling me how
to initiate a Clojure application.
Hi,
As a very green Clojure user and a big fan of persistent data
structures, I'm struggling to grasp the significance of transients in
Clojure 1.1. In particular, the implementation seems to be less safe
and less consistent than it could be.
Consider this somewhat silly REPL session:
user=
On Sun, Jan 31, 2010 at 10:33 PM, Barry Dahlberg
barry.dahlb...@gmail.com wrote:
Perhaps I'll write up my findings once the language stops intimidating
me.
At the moment I'm writing an account object. I have some standard
CRUD type functions which operate on a map behind the scenes. I would
My guess is that the resulting ephemeral garbage would have only a
small effect on performance, retaining most of the advantage of
transients, but improving their safety. Would any of the Clojure
experts care to comment on whether this seems like a worthwhile
exercise?
Having spent a ton of
If you are the copyright owner, you always have the final word on what
you do with your stuff. The license is for users of your product. This
means you can arrange another license for paying people if you want,
this is what is done when dual-licensing.
If you reuse things of other people however,
Am 31.01.2010 um 18:29 schrieb Daniel Werner:
If I understand this arity version of get-in correctly, won't the
default also be used if the value stored in the nested data structure
evaluates to something false-y?
Thanks for spotting that early!
On 1 February 2010 05:46, Meikel Brandmeyer
On 1 February 2010 09:32, Wardrop t...@tomwardrop.com wrote:
Could someone step me through the idea behind the -main function
(which I've also seen written as just main without the hyphen).
Is -main special in any way, or is this just a convention that some
environments select? In the past I
Hi,
On Feb 1, 1:57 pm, Timothy Pratley timothyprat...@gmail.com wrote:
Good idea, but peek and pop work differently on vectors and sequences,
seeing get-in is not constrained to use vectors this could lead to an
unexpected behavior:
user= (def m {:a 1, :b 2, :c {:d 3, :e 4}, :f nil})
On Feb 1, 3:16 pm, Timothy Pratley timothyprat...@gmail.com wrote:
On 1 February 2010 09:32, Wardrop t...@tomwardrop.com wrote:
Could someone step me through the idea behind the -main function
(which I've also seen written as just main without the hyphen).
Is -main special in any way, or
Is -main special in any way, or is this just a convention that some
environments select? In the past I think I've used a manifest to
specify the main entry point... is that really necessary or does -main
map to the default main entry point regardless of build tool? Just
curious really!
I
On 30 January 2010 02:35, Michał Marczyk michal.marc...@gmail.com wrote:
Well, with sources freshly pulled from github just now, I was able to
build contrib with no trace of the problem... Doing a (require
'clojure.contrib.jmx) followed by run-tests at the REPL also works.
Still no idea what
The official JMX API is a programmer-usability disaster (IMO), and I
wrote the contrib jmx wrapper by trial-and-error to get minimal
functionality working. A few thoughts:
* I will take a look at this (but won't be able to get to it today).
Feel free to make assembla guilt that points to
Stuart Sierra wrote:
On Jan 30, 9:07 am, Jeff Schwab j...@schwabcenter.com wrote:
The clojure-contrib I just pulled from github fails to compile, with an
error that the ColumnWriter class extended by PrintWriter is not found.
This has been fixed now.
Thanks. I see that you made an
The simple:
(file-seq (java.io.File. .))
will loop forever if it hits a directory structure with recursive
links.
Short of writing ugly code myself to detect such loops, is there
already a Clojure thingamabob that does this safely?
-Jim
--
You received this message because you are
Guys,
Thanks for your answers.
I'll give both of these solutions a try out this week and get back to
the list with results and thoughts.
Thanks again for your help.
Jules
--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send
Moss Prescott m...@theprescotts.com writes:
My guess is that the resulting ephemeral garbage would have only a
small effect on performance
An interesting data point on ephemeral garbage that was quite
eye-opening: Somewhere in the talk below, Cliff Click says that the
problem with high-volume
On Feb 1, 10:53 am, Jeff Schwab j...@schwabcenter.com wrote:
Thanks. I see that you made an end-run around Maven. I didn't know you
could use gen-class that way.
It's more an end-run around gen-class than around Maven.
gen-class is an ordinary macro; it can be used anywhere, not just in
ns
Hmmm... to the best of my knowledge this has to be handled by the end
developer.
Could you post what you find out?
Sean
On Feb 1, 9:22 am, Jim Van Donsel j...@jimandbarb.net wrote:
The simple:
(file-seq (java.io.File. .))
will loop forever if it hits a directory structure with
On Fri, Jan 29, 2010 at 9:29 PM, Timothy Pratley
timothyprat...@gmail.com wrote:
Would it be better to throw an exception if nothing was specified to
load instead of returning true/false... Because :foo is a keyword,
making it a valid argument to use and require, but no load target is
As the first stage in a much-needed code cleanup, the following
changes are now on the master branch of clojure-contrib:
* Rename c.c.str-utils3 = c.c.string
* Rename c.c.duck-streams = c.c.io
* Rename c.c.java-utils = c.c.java
* Rename c.c.seq-utils = c.c.seq
* Rename c.c.shell-out = c.c.shell
On Jan 30, 8:09 am, Timothy Pratley timothyprat...@gmail.com wrote:
Below I present 'submit-future' which is similar to the existing
'future' call in that it spawns a thread to execute a task, but
differs in that it will block if n submitted futures are already
running, where n is the number
On Jan 30, 7:07 am, free_variation cane.c...@gmail.com wrote:
(defn init-features [stream]
(let [feature-stream (ref stream)]
(dosync (ref-set feature-stream stream))
The call to ref-set seems redundant here since you already initialize
the ref with stream as its value.
I wrote something like this last night:
(def user-metadata {:fields
((:name (required) (max-length 50))
(:email (required) (max-length 250)))})
(defn create-user [name, email]
(with-meta
{:name name :email email}
user-data))
I have a validate function which pulls the metadata
On Feb 1, 6:22 am, Jim Van Donsel j...@jimandbarb.net wrote:
The simple:
(file-seq (java.io.File. .))
will loop forever if it hits a directory structure with recursive
links.
Short of writing ugly code myself to detect such loops, is there
already a Clojure thingamabob that does
Fair enough.
But I guess the moral is that a file-seq should not be used unless you
have a well-controlled filesystem.
--
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
On Feb 1, 2:14 pm, Jim Van Donsel j...@jimandbarb.net wrote:
Fair enough.
But I guess the moral is that a file-seq should not be used unless you
have a well-controlled filesystem.
Or more generally, all sequences may be infinite unless you know the
backing data has no cycles, or you have
Ok, this seems to work...
(ns localhost.test)
(clojure.main/main (println Hello!))
I then assume I'd use the special form do to perform multiple
unrelated tasks, such as...
(clojure.main/main
(do
(println Hello!) (println Cheeso!)))
At least I can now build and run a script.
On Feb 1,
Hi clojure folk,
I'm reading up on clojure from the book 'Programming clojure'. In
chapter 2 there is a statement -
The imperative indexOfAny must deal with several special cases:
null or empty strings, a null or empty set of search characters,
and the absence of a match. These special cases
http://h4dev.com/entries?search=multimethods
Using the major search engines for info on clojure language, tools and
dev practices is trying at best for beginning and intermediate devs,
so I've worked toward building a searchable database that I think will
yield more precision at the cost of less
On Jan 28, 3:26 pm, Raoul Duke rao...@gmail.com wrote:
[gmail is freaking out, apologies if this is sent twice]
On Thu, Jan 28, 2010 at 12:23 PM, DanL leidis...@gmail.com wrote:
When exactly would a lazy sequence evaluate to false?
i thought it was happening with code like:
(let
On Mon, Feb 1, 2010 at 3:20 PM, rzeze...@gmail.com rzeze...@gmail.com wrote:
I think the problem was more of a misunderstanding with the and
function and not lazy sequences.
i agree (hence my previous note where i said i didn't know what the
hell i was doing) :-)
many thanks for taking the
On 2 February 2010 00:18, Meikel Brandmeyer m...@kotka.de wrote:
Consider this (admittedly constructed) case:
(get-in {:a {:b 1}} [:x :c] {:c :uhoh})
Excellent point!
Or to use butlast/last instead of peek/pop.
I think this is the best approach. butlast/last have linear time so
the overhead
Hi ka,
You're right. Eliminating special cases is more a factor of the design
of the API than of the programming language. Nevertheless, a well-
designed API (that has eliminating special cases in mind) in
combination with a functional programming language makes your code
extremely elegant. Thus
My question is: why not have each conj! produce a new, lightweight
TransientVector instance pointing to the same shared data?
...
My guess is that the resulting ephemeral garbage would have only a
small effect on performance, retaining most of the advantage of
transients, but improving their
Urp yes thanks! Remainder of a previous version of the function.
jds
On Feb 1, 3:57 pm, Daniel Werner daniel.d.wer...@googlemail.com
wrote:
On Jan 30, 7:07 am, free_variation cane.c...@gmail.com wrote:
(defn init-features [stream]
(let [feature-stream (ref stream)]
Hi,
I'm wondering whether (apply concat ...) can be re-written to be
lazy.
---Expected behavior---
(def temp (for [i (range 20)]
(do (println i)
[i i i])))
(def temp2 (apply concat temp))
Should print nothing.
-Behavior in 1.1.0-RC-
Under
I'm wondering whether (apply concat ...) can be re-written to be
lazy.
...
-Behavior in 1.1.0--
The operation is eager.
It's not: it simply uses chunked sequences, so the first 32 elements
are evaluated together.
user= (def temp (for [i (range 50)]
(do (println i)
Oh I see. Thanks for the explanation. I always assumed that chunked
sequences can be viewed as purely an optimization and transparent from
the user. Is there a way (short of writing a lazy version of apply
concat) that I can achieve my desired result?
-Patrick
--
You received this message
Oh I see. Thanks for the explanation. I always assumed that chunked
sequences can be viewed as purely an optimization and transparent from
the user. Is there a way (short of writing a lazy version of apply
concat) that I can achieve my desired result?
I've heard talk about trying to provide
Hi,
I'm a clojure newbie, with a background in Common Lisp (and
functional
languages such as haskell and erlang).
For me Lisp is a very powerful tool that gives me flexibility that I
need. Sometimes coding with CL I define reader macros and they perfect
suit for those situations. After I take a
Hello.
I built master branch of clojure and clojure-contrib and then I found
that there is no duck-streams. io exists.
Can I write a code on both 1.1 and master using duck-streams/io?
FYI, I want something like this Python code in Clojure:
try:
from clojure.contrib.io import
'when pred' just checks that you're not passing in garbage for the
predicate -- it's probably not really necessary and it might be better
to let Clojure throw an exception.
Totally agree on your point with the branching. That's not really FP-
related, it's only that most FP languages allow
java -classpath C:\Program Files\Clojure\clojure.jar;C:\Program
Files\Clojure\clojure-contrib-1.1.0.jar clojure.main
This starts the repl without a problem, but still, any attempt to use
a class or function from the contrib library fails, for example,
running this at the repl...
I'm not
Gene Tani wrote:
http://h4dev.com/entries?search=multimethods
So i'd like people to try it out, give me feedback (yah, the
stylesheet and UI need work). For now i'm focused on the language and
implementation, less focused on IDE's/editors, web app frameworks,
ORM's, leiningen, incanter, stuff
Thanks for the help Richard.
After playing around with 1.1.0 some more (I just upgraded). I'm
finding that the chunked sequences is destroying all my code that
relied on lazy sequences. Isn't the following a pretty standard thing
to do?
(for [i (range 20)]
(do (println i)
I had already tried using a colon as the separator, but it gave an
error. I've also noticed that if neither path resolves to a file, it
also errors, so it's finding clojure-contrib-1.1.0.jar.
On Feb 2, 2:07 pm, tsuraan tsur...@gmail.com wrote:
java -classpath C:\Program
Am I understanding this correctly? It seems laziness is only an option
in batches of 32 now.
Indeed. *Processing* *chunked* lazy sequences can only be done in
batches of 32.
Custom lazy sequences (using (lazy-seq ...)) don't suffer from this.
You might be interested in this blog post:
Hi,
Sorry for the repeat emails. We have extended the deadline for submissions
for this special issue. It is now February 15th. If you thought about
submitting a paper, but didn't think you could make the original deadline,
we hope you will reconsider.
I had already tried using a colon as the separator, but it gave an
error. I've also noticed that if neither path resolves to a file, it
also errors, so it's finding clojure-contrib-1.1.0.jar.
Can you use it with
(use 'clojure.contrib.duck-streams) ?
Both ways work for me, but it's the only
Ok, I found the problem. If quotes need to be used, the all paths
including semi-colons need to be within a single pair of double
quotes. For example...
java -cp C:\Program Files\Clojure\clojure.jar;C:\Program Files\Clojure
\clojure-contrib-1.1.0.jar clojure.main
How subtitle is that. If only
I better provide credit to this page:
http://forums.pragprog.com/forums/91/topics/1738
On Feb 2, 2:25 pm, Wardrop t...@tomwardrop.com wrote:
I had already tried using a colon as the separator, but it gave an
error. I've also noticed that if neither path resolves to a file, it
also errors, so
Thanks for helping me through this Richard. I think I got the gist of
the argument now from the blog post you linked to. Now that I think
about it, *most* code doesn't break with chunked sequences, so that
seems to be alright.
Though generally I prefer following the principle of least-surprise...
Hi Timothy,
On Feb 2, 1:19 am, Timothy Pratley timothyprat...@gmail.com wrote:
There are still some sharp edges I'm not sure about:
(A) user= (get-in {:a 1} [])
{:a 1}
;; this is existing behavior, but I feel the result should be nil
+1 for nil
(B) user= (get-in {:a 1} nil)
{:a 1}
;;
There are still some sharp edges I'm not sure about:
(A) user= (get-in {:a 1} [])
{:a 1}
;; this is existing behavior, but I feel the result should be nil
+1 for nil
I think I disagree.
If you view 'get-in' as an unwrapping operation, unwrapping by zero
steps should return the existing
Hi,
On Feb 2, 7:55 am, Richard Newman holyg...@gmail.com wrote:
I think I disagree. Can you explain why you think the result should be nil?
Woops. I got confused. I didn't mean nil for empty key sequences. I
meant throwing an exception as does get.
Sincerely
Meikel
--
You received this
On Feb 1, 2:54 pm, Wardrop t...@tomwardrop.com wrote:
Ok, this seems to work...
(ns localhost.test)
(clojure.main/main (println Hello!))
I then assume I'd use the special form do to perform multiple
unrelated tasks, such as...
(clojure.main/main
(do
(println Hello!) (println
De gustibus non est disputandum.
That said, I'd be interested in seeing a clojure example which
benefits from a currently-non-existant reader macro.
--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to
On Feb 1, 6:23 pm, OGINO Masanori masanori.og...@gmail.com wrote:
Hello.
I built master branch of clojure and clojure-contrib and then I found
that there is no duck-streams. io exists.
Can I write a code on both 1.1 and master using duck-streams/io?
FYI, I want something like this
On a related note, it is my sincere hope that we get a version of
require and use which no longer require (ha!) the use of quoted
parens. Thankfully the ns macro will work with solely nested vectors.
--
You received this message because you are subscribed to the Google
Groups Clojure group.
To
Tom Hicks hickstoh...@gmail.com writes:
I can't seem to do this with the 'inc' function:
user= (binding [inc (fn [y] (+ 2 y))] (inc 44))
45
Why doesn't this work?
See this thread:
http://groups.google.com/group/clojure/browse_thread/thread/d772e114e50aace6
--
You received this message
61 matches
Mail list logo