On Mon, Nov 09, 2009 at 10:07:41PM -0800, David Brown wrote:
>On Mon, Nov 09, 2009 at 09:42:28PM -0800, Mark Engelberg wrote:
>>But let's say the agent is responsible some enormous database, and
>>it's impractical for the in-memory state to hold all the information
>>that readers might find useful
On Mon, Nov 09, 2009 at 09:42:28PM -0800, Mark Engelberg wrote:
>But let's say the agent is responsible some enormous database, and
>it's impractical for the in-memory state to hold all the information
>that readers might find useful. In this case, I think you're right
>that the basic agent func
On Mon, Nov 09, 2009 at 05:19:41PM -0800, Don wrote:
>
>I am having a problem with vectors. It seems there should be a
>function for this however I am not sure.
>
>I have a vector a [ [2 3] [4 5] [6 7] ]
>
>And I want to be able to get [2 3 4 5 6 7]
There's a flatten in clojure.contrib.seq-utils
> I have a vector a [ [2 3] [4 5] [6 7] ]
>
> And I want to be able to get [2 3 4 5 6 7]
user=> (reduce into [ [2 3] [4 5] [6 7] ])
[2 3 4 5 6 7]
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To p
(use 'clojure.contrib.seq-utils)
(flatten [ [2 3] [4 5] [6 7] ])
On Mon, Nov 9, 2009 at 8:19 PM, Don wrote:
>
> I am having a problem with vectors. It seems there should be a
> function for this however I am not sure.
>
> I have a vector a [ [2 3] [4 5] [6 7] ]
>
> And I want to be able to get
I am having a problem with vectors. It seems there should be a
function for this however I am not sure.
I have a vector a [ [2 3] [4 5] [6 7] ]
And I want to be able to get [2 3 4 5 6 7]
Any suggestions greatly appreciated. Thank you.
--~--~-~--~~~---~--~~
You
I in CL they can be read but aren't interned in any package so every
time you read it you get a different symbol.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to c
On Mon, Nov 9, 2009 at 8:28 PM, David Brown wrote:
> Let's say I have some thing that keeps track of the state of some I/O
> entity, let's say some kind of file-based storage. There is state
> associated with the entity. It's important that only one thread be
> able to read or write from this s
(locking resource (read/write)) sounds appropriate for such a resource
to me. Maybe you should do locking writes through an agent, and just
rely on locking for blocking reads. I don't really know how lock
requests are queued, is that why you are looking for more complicated
answers?
;; ugh this i
David,
Agents are designed to be call only once. That's why they're useful
for I/O (stuff w/ side effects). refs, however, will retry inside a
transactions.
As always, Rich explains it better than me:
http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
Sean
On Nov 9, 11:41 pm,
On Mon, Nov 09, 2009 at 08:28:43PM -0800, David Brown wrote:
>In both cases, the reads run completely synchronously, waiting for
>their answer, and really the whole thing isn't really any better than
>just using locks.
I guess a deeper concern is that there seems to only be a single call
in the
I'm trying to get a better grasp of how Agents are intended to be
used, so let me give an example scenario.
Let's say I have some thing that keeps track of the state of some I/O
entity, let's say some kind of file-based storage. There is state
associated with the entity. It's important that onl
On Nov 9, 6:36 am, Stuart Halloway wrote:
> I have a poor man's version:
>
> find . -name '*.clj' | xargs etags --regex=@/Users/stuart/bin/
> clojure.tags
>
> clojure.tags =>
> /[ \t\(]*def[a-z]* \([a-z-!]+\)/\1/
> /[ \t\(]*ns \([a-z.]+\)/\1/
>
> Anyone have a better approach?
If you
Hello all,
I'm trying to add a directory to my classpath in Aquamacs. How do I
do this recusively? Here's what I've got right now
(setq swank-clojure-extra-classpaths (list
...lots-of-jars...
"~/Applications/clojure-apps/swing-test/"))
Can somebody give me a hand?
Thanks!
--~--~
That's also the idiom I use, which is why I have the following utility
in my startup.
(defn zip [& args] (apply map vector args))
-Patrick
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to t
> How does it efficiently deal with when the list-part has been completely
> consumed?
Well, the latest code is here:
http://github.com/richhickey/clojure/blob/master/src/jvm/clojure/lang/PersistentQueue.java
I don't know whether it has changed since 1.0.
Just look in the src/jvm/clojure/lang dir
On Mon, Nov 9, 2009 at 10:37 PM, Mark Engelberg wrote:
> Yes, it's in Clojure 1.0, it just doesn't have a convenient name.
>
> So give it a convenient name like this:
> (def empty-queue clojure.lang.PersistentQueue/EMPTY)
>
> and then you're ready to go.
>
> conj, peek, pop, into and all the other
Yes, it's in Clojure 1.0, it just doesn't have a convenient name.
So give it a convenient name like this:
(def empty-queue clojure.lang.PersistentQueue/EMPTY)
and then you're ready to go.
conj, peek, pop, into and all the other sequence-based functions work
the way you'd expect.
The implementa
On Mon, Nov 9, 2009 at 8:53 PM, Mark Engelberg wrote:
> On Mon, Nov 9, 2009 at 5:41 PM, John Harrop wrote:
> > In the meantime, the main thing still missing from Clojure is a
> convenient
> > queue.
>
> What's wrong with clojure.lang.PersistentQueue?
There is one? There's no corresponding API i
On Mon, Nov 9, 2009 at 8:41 PM, John Harrop wrote:
> In the meantime, the main thing still missing from Clojure is a convenient
> queue. Lists and vectors both add and remove efficiently only at one end,
> and at the same end for add and remove in both cases. Doubly-linked lists
> can't be made p
On Mon, Nov 9, 2009 at 5:54 PM, David Brown wrote:
> Perhaps the GHC Data.Sequence library could be ported. It's based on
> 2-3 finger trees, and allows efficient adding and removal from either
> end of the sequence.
I've tried porting finger trees to Scheme before, and although it is
efficient
I imagine he's just busy. At this point, I plan to create a ticket on
assembla, if that's possible - I think I just need to create a login
and then file it.
On Nov 9, 2:07 pm, John Harrop wrote:
> On Mon, Nov 9, 2009 at 4:31 PM, Rock wrote:
> > I've been following this thread, and I must say I'
On Mon, Nov 09, 2009 at 05:54:36PM -0800, David Brown wrote:
>Depending on use behavior, you can also make a decent lazy queue just
>out a two lists, where you reverse and append whenever the source side
>fills up.
Ok, this is what PersistentQueue is, except without the reverse and
append, so it
On Mon, Nov 09, 2009 at 05:53:28PM -0800, Mark Engelberg wrote:
>
>On Mon, Nov 9, 2009 at 5:41 PM, John Harrop wrote:
>> In the meantime, the main thing still missing from Clojure is a convenient
>> queue.
>
>What's wrong with clojure.lang.PersistentQueue?
The only clojure constructor I could fi
On Mon, Nov 09, 2009 at 08:41:25PM -0500, John Harrop wrote:
>In the meantime, the main thing still missing from Clojure is a convenient
>queue. Lists and vectors both add and remove efficiently only at one end,
>and at the same end for add and remove in both cases. Doubly-linked lists
>can't be
On Mon, Nov 9, 2009 at 5:41 PM, John Harrop wrote:
> In the meantime, the main thing still missing from Clojure is a convenient
> queue.
What's wrong with clojure.lang.PersistentQueue?
--~--~-~--~~~---~--~~
You received this message because you are subscribed to
On Mon, Nov 9, 2009 at 8:28 PM, John Harrop wrote:
> Why not:
>
> static public Object contains(Object coll, Object key){
> if(coll == null)
> return F;
> else if(coll instanceof Map)
> return ((Map) coll).containsKey(key) ? T : F;
> else if
On Mon, Nov 9, 2009 at 5:50 PM, Alex Osborne wrote:
> Mark Engelberg wrote:
> > 2009/11/9 Tiago Antão :
> >> What is the rationale for even? and contains? having different
> >> behaviors for the exact same error (ie, one throws the other works
> >> fine and just returns false on a type error)?
>
> Right, strings and vectors can be thought of as either collections, or
> as associative mappings from integers to characters/objects.
> contains? treats them as associative mappings. Yes, it's unintuitive,
> but it has a certain degree of internal consistency.
This certainly encourages you to
2009/11/9 Tiago Antão :
> But the end result with strings and vectors is a tad unintuitive...
Right, strings and vectors can be thought of as either collections, or
as associative mappings from integers to characters/objects.
contains? treats them as associative mappings. Yes, it's unintuitive,
Very nice, I had actually been implementing a boggle solver for my
optimal boggle grid generator (5x5 with no limits on number of letters
on dice). I hadn't discovered the wonders of assoc-in though which
makes things look much nicer when creating nested maps. I really like
the layout of your co
On Mon, Nov 9, 2009 at 10:20 PM, John Harrop wrote:
> It seems to treat strings as it does vectors, seeing if an index is in
> bounds or not. It doesn't treat symbols as anything though.
> The clojure.contrib.seq-utils/includes? function gives true for "foo" and
I did not want to make this a di
Well there is a bug. One declaration is missing...
Try add your routine:
(defn hash-map2
([ keyvals]
(. clojure.lang.PersistentHashMap (create keyvals
Then call
(hash-map2 (HashMap. { "tom" "boom" } ) )
Wiadomość napisana przez Alex Osborne w dniu 2009-11-09, o godz. 23:55:
>
Ok, that is nice.
But when you look at core.clj you will find
(defn hash-map
"keyval => key val
Returns a new hash map with supplied mappings."
([] {})
([& keyvals]
(. clojure.lang.PersistentHashMap (create keyvals
And when you look at clojure.lang.PersistentHashMap
you will
Michael Jaaka wrote:
> How to convert HashMap to Clojure map, sorted-map,
> tree-map
>
> How far I'm able only to do it with
>
> (let [a (HashMap. { "abc" "def"}) ]
>(zipmap (keys a) (vals a)))
>
> Note that HashMap. { ... } is here only as example, cause in fact it
> is a result from J
On Mon, Nov 09, 2009 at 11:42:32PM +0100, Michael Jaaka wrote:
>How to convert HashMap to Clojure map, sorted-map,
>tree-map
(into {} hm)
or
(into (sorted-map) hm)
where hm is the hash map.
You can also just use the hash map like you would a Clojure map, but
it might change on you, since
Mark Engelberg wrote:
> 2009/11/9 Tiago Antão :
>> What is the rationale for even? and contains? having different
>> behaviors for the exact same error (ie, one throws the other works
>> fine and just returns false on a type error)?
> I imagine the rationale is efficiency.
Here's the function
Hi!
How to convert HashMap to Clojure map, sorted-map,
tree-map
How far I'm able only to do it with
(let [a (HashMap. { "abc" "def"}) ]
(zipmap (keys a) (vals a)))
Note that HashMap. { ... } is here only as example, cause in fact it
is a result from Java method call.
What with sorted-m
Why when I click on left in the index menu, the description of a
function shows on top?
It should be right next to clicked position, so I won't scroll whole
page on top in order to read doc.
Wiadomość napisana przez John Harrop w dniu 2009-11-09, o godz. 23:08:
> On Mon, Nov 9, 2009 at 4:28
Even more interesting is the behavior of contains? when passed strings:
user=> (contains? "foo" \o)
false
user=> (contains? "foo" 2)
true
user=> (contains? "foo" 3)
false
user=> (contains? 'foo 2)
false
It seems to treat strings as it does vectors, seeing if an index is in
bounds or not. It doesn
On Mon, Nov 9, 2009 at 4:28 PM, Howard Lewis Ship wrote:
> It looks very nice ... still I'd love to see something like what
> clj-doc does (http://github.com/mmcgrana/clj-doc) ... it adds a text
> field that you can type into and it matches the available names
> against what you type, hiding the
On Mon, Nov 9, 2009 at 4:31 PM, Rock wrote:
> I've been following this thread, and I must say I'm puzzled that Rich
> hasn't said anything at all about this issue yet. It seems important
> enough to hear his own opinion.
My observation over the past few months is that Rich has long absences awa
choices for Clojure are mostly
in the "pragmatic" category: a compromise between principles,
simplicity, and efficiency.
Konrad.
__ Information provenant d'ESET NOD32 Antivirus, version de la base des
signatures de virus 4589 (20091109) __
Le message a été vérifié par ESET N
s! I didn't spot any problems other than those mentioned
already:. But please add clojure.test and clojure.parallel as well!
Konrad.
__ Information provenant d'ESET NOD32 Antivirus, version de la base des
signatures de virus 4589 (20091109) __
Le message a été vérifié p
I've been following this thread, and I must say I'm puzzled that Rich
hasn't said anything at all about this issue yet. It seems important
enough to hear his own opinion.
On 6 Nov, 18:56, Paul Mooser wrote:
> So, I've been hoping that Rich (or someone?) would weigh in on this,
> and give the go
It looks very nice ... still I'd love to see something like what
clj-doc does (http://github.com/mmcgrana/clj-doc) ... it adds a text
field that you can type into and it matches the available names
against what you type, hiding the rest. So if you know part of the
name, you can take a very large
On Mon, Nov 9, 2009 at 8:31 PM, Mark Engelberg wrote:
> I imagine the rationale is efficiency. Every core function could
> conceivably do a number of runtime checks to make sure that each input
> is the right kind of type, and then Clojure might feel more sluggish.
> So instead, the core functio
what makes functional programming better is the reduction of state. so
for example, if I decide that the function call out to contains? is
too much overhead in a tight loop, I can just copy and paste the
relevant code without being concerned that I might miss some crucial
piece of state it twiddle
On Mon, Nov 9, 2009 at 12:52 PM, Andrew Boekhoff wrote:
> Hi.
> > And gives very different results. 'for' iterates over it's sequences
> > in a nested fasion. For your particular example, it will return the
> > sequence from (+ 31 1) (+ 31 2) and so on, and never get to the second
> > element of
Here's another way to think about it.
Why is functional programming better than imperative programming?
One common answer to this question is that functional programs are
easier to debug. Why? Because in an imperative program, if one part
has an error, the error doesn't necessarily manifest in
On Mon, Nov 9, 2009 at 12:32 PM, Kevin Downey wrote:
>
> the behavior of functions outside of their domain is undefined. I
> guess I still don't get it. why would you use a function on something
> outside of its domain? do people just pick functions at random to
> compose their programs?
Of cour
the behavior of functions outside of their domain is undefined. I
guess I still don't get it. why would you use a function on something
outside of its domain? do people just pick functions at random to
compose their programs?
2009/11/9 Tiago Antão :
>
> On Mon, Nov 9, 2009 at 8:08 PM, Kevin Down
2009/11/9 Tiago Antão :
> What is the rationale for even? and contains? having different
> behaviors for the exact same error (ie, one throws the other works
> fine and just returns false on a type error)? From a design
> perspective this seems to increase the cognitive load to programmers
> witho
The general philosophy in Clojure seems to be that if you use a
function in a way that is not intended, there's no guarantee about
what might happen. You might get an error, or you might just get a
strange result.
--~--~-~--~~~---~--~~
You received this message be
On Mon, Nov 9, 2009 at 8:08 PM, Kevin Downey wrote:
>
> I don't understand, the error message you get is the error that occurred.
Both of them honor their documentation - no doubt. My point is not
that, my point is that the behavior is different between the 2
functions for the same kind of issue
I don't understand, the error message you get is the error that occurred.
the docstring from even? says it throws an exception if the argument
is not and integer.
I would hope that anyone that has read the docstring for contains?
would not use (contains? 'foo 'bar), because, uh, that just makes
Ah that was what I was missing. You are right,
I misunderstood the recur form.
For some reason I thought in recur you have to specify the
name of the variable that it's bound to.
so when I wrote
(recur (newlist (cons (first x) newlist))
I thought I was saying in recur, rebind (cons (first x) ne
Hi all,
Just a question about the consistency of the API:
When one passes a "strange" (ie, wrong type) object to contains?, say
(contains? 'blab 'a)
the result is a false.
But if one passes the wrong type to, e.g., even?, like
(even? 'a)
The result is:
java.lang.ClassCastException: clojure.lang.
Hi,
Am 09.11.2009 um 20:08 schrieb Wilson MacGyver:
> (defn group [x]
> (loop [newlist [] currlist x]
> (if (not (empty? x))
>(recur (newlist (cons (first x) newlist))
> (currlist (drop-while #(= (first currlist) %) currlist))
>
>
>
> It seems logical to me, but when
Hi.
> And gives very different results. 'for' iterates over it's sequences
> in a nested fasion. For your particular example, it will return the
> sequence from (+ 31 1) (+ 31 2) and so on, and never get to the second
> element of the first vector.
I like it. I was recently wondering about a co
On Mon, Nov 9, 2009 at 2:31 PM, Emeka wrote:
>
> (defn group [x]
> (loop [newlist [] currlist x]
> (if (not (empty? x))
> (recur (newlist (cons (first x) newlist))
> (newlist (cons (first x) newlist)) You are making a function call here
> using an empty vector and your argument is a list. Th
(defn group [x]
(loop [newlist [] currlist x]
(if (not (empty? x))
(recur (newlist (cons (first x) newlist))
(newlist (cons (first x) newlist)) You are making a function call here
using an empty vector and your argument is a list. This is not possible,
that's why you have that error ([] (cons
> Great work getting this to work for core. This will really,
> really, really help those of us running edge Clojure.
Thanks. Glad to help.
> BUGS:
Yup, know about all these. The right margin thing can be fixed by
making your window wider :-).
> ENHANCEMENTS:
> * Each namespace
Hi!
Is there any support from Clojure for communication between procesess
by sockets?
I'm interested in communication via RMI.
How about agents? I don't know much about agents exept fact that they
are seen in terms of threads in the same process? Should the socket
communication/RMI be inter
Thanks guys for the various solutions. I set out trying to try a recur solution
So I came up with this. the idea is to go through the collection being
passed, and grab one element, then do drop-while until a different
element is encountered. repeat until there is no more left in the collection.
Tom,
Great work getting this to work for core. This will really,
really, really help those of us running edge Clojure.
BUGS:
* In Firefox 3.5, the api-index page overflows the right edge of
the background. It looks right in IE 6 & 7. I'll check Safari
tonight.
* Your "Letter li
Hi all,
I've been adapting my documentation robot to work for things other
than contrib and the first result is now available: documentation for
HEAD in clojure core.
You can find it here: http://tomfaulhaber.github.com/clojure/
There are still a few bugs in the links and some of the clojure co
On Nov 9, 6:42 pm, David Brown wrote:
> And gives very different results. 'for' iterates over it's sequences
> in a nested fasion. For your particular example, it will return the
> sequence from (+ 31 1) (+ 31 2) and so on, and never get to the second
> element of the first vector.
>
> 'let-map
On Mon, Nov 09, 2009 at 09:07:31AM -0800, pmf wrote:
>
>On Nov 9, 5:39 pm, David Brown wrote:
>>
>> (let-map [x [31 41 59 26]
>> y (iterate inc 1)]
>> (+ x y))
>>
>> Probably not that interesting in the simple case.
>
>How is this different from using for? It's also lazy and
On Nov 9, 5:39 pm, David Brown wrote:
>
> (let-map [x [31 41 59 26]
> y (iterate inc 1)]
> (+ x y))
>
> Probably not that interesting in the simple case.
How is this different from using for? It's also lazy and supports
destructuring.
(for [x [31 41 59 26]
y (iterate
On Mon, Nov 09, 2009 at 04:49:16PM +, Emeka wrote:
>What is the gain of using lazy-seq here? Why can't we go without laziness?
- The lazy version doesn't consume stack per length of the sequence.
- The lazy version works with unbounded sequences.
For short sequences it probably doesn'
Meikel,
What is the gain of using lazy-seq here? Why can't we go without laziness?
(defn group
[s]
(when-let [s (seq s)]
(let [f(first s)
[fs & r] (split-with #(= % f) s)]
(cons fs (group r)
Regards,
Emeka
On Mon, Nov 9, 2009 at 4:44 PM, Emeka wrot
Meikel,
Is like you over engineered your version?
(defn group
[s]
(lazy-seq
(when-let [s (seq s)]
(let [f(first s)
[fs & r] (split-with #(= % f) s)]
(cons fs (group r))
Should be ..
(defn group
[s]
(lazy-seq
(when-let [s (seq s)]
(let [f
Given the recent talk about iter and how most of the expressions can
be done easily with sequences and map. I however, have found that map
often makes these difficult to read because the names are up front in
the function and the arguments follow this.
So, I threw together the following macro th
On Sun, Nov 8, 2009 at 5:56 PM, Kevin Tucker wrote:
> This is something that I have been wondering about too. In CL the
> symbols gensym produces can not be read by the reader so there can be
> no collision cause the only way to get a handle on the symbol is to
> create it with gensym and hold o
Hi,
On Nov 9, 3:14 pm, Michael Jaaka wrote:
> and the other question is if I have (def c [ [ 1 2 ] [ 3 4 ] ]) and want to
> get lazily [ 2 4 ] (values of tuplets of a sequence) will be this a correct
> (map #(-> % fnext) c ) way?
(map second c) is what you want. This is missing from my soluti
I have a poor man's version:
find . -name '*.clj' | xargs etags --regex=@/Users/stuart/bin/
clojure.tags
clojure.tags =>
/[ \t\(]*def[a-z]* \([a-z-!]+\)/\1/
/[ \t\(]*ns \([a-z.]+\)/\1/
Anyone have a better approach?
Thanks,
Stu
--~--~-~--~~~---~--~--
By the first I mean this done by Meikel Brandmeyer. However I will check
later also this one:
"(use '[clojure.contrib.seq-utils :only (partition-by)])
(map (comp callback-fn (fn [part] [(ffirst part) (map second part)]))
(partition-by first *s*))"
and the other question is if I have (def c [
Keys are always sorted. So once a key stops appearing it won't appear again.
The first solution seems to be the right one, because all values are
processed in a sequence manner in a lazy way.
2009/11/8 DTH
>
> On Nov 8, 12:33 pm, Michael Jaaka
> wrote:
> >
> > now I would like get such effect t
Here's something based on a similar question I asked in #clojure the
other day, based on the code Chousuke answered with (all ugliness is
my fault).
(defn cond [f pred]
(fn [coll acc outp]
(if (empty? coll)
(conj outp acc)
(if (pred
Hi,
Am 09.11.2009 um 07:33 schrieb Wilson MacGyver:
> I did search in the API docs for both core and contrib, but didn't
> find anything like
> it.
>
> Does Clojure have a function like Haskell's group?
>
> In Haskell,
> Input: group [1,2,2,1,1,1,2,2,2,1]
> Output: [[1],[2,2],[1,1,1],[2,2,2],[1]]
This is something that I have been wondering about too. In CL the
symbols gensym produces can not be read by the reader so there can be
no collision cause the only way to get a handle on the symbol is to
create it with gensym and hold on to it. In other words you couldn't
construct a symbol that
On Nov 8, 12:33 pm, Michael Jaaka
wrote:
>
> now I would like get such effect that callbackListener will be called twice
> for the example collection.
>
> once with "tom" and iterator (or a lazy seq) to lazy evaluated collection of
> (32 and 2333)
> and second with "anne" and iterator for collect
83 matches
Mail list logo