Re: Insertion - The clojure way

2010-12-30 Thread Andreas Kostler
Hi All, It is amazing what a discussion inserstion sort (still) can kick off :) My intention was to play with algorithms in clojure and be made aware of the little traps one has to look out for coming from scheme for instance. Therefore, translating the htdp version to clojure and playing with

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 12:51 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: Now the discussion evolved around vectors not being suitable for this task. Can someone explain why this holds in this context? In my understanding subvec is a constant time operation. So maybe vector is

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Wed, Dec 29, 2010 at 11:31 PM, David Nolen dnolen.li...@gmail.com wrote: The original algorithm is simply wrong for very large inputs, it cannot be TCO'ed. Pick a ridiculously large list size and the Scheme/Racket program will barf *immediately*. David Have you tried it? I tried this

Re: Insertion - The clojure way

2010-12-30 Thread Andreas Kostler
Oh, vectors are indeed bad since vector concatenation is a linear time operation. My apologies to Meikel, I simply missed your remark about finger trees. I guess a version that swaps the values in place would be the way to go. On 30/12/2010, at 7:34 PM, Mark Engelberg wrote: On Wed, Dec 29,

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 3:24 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: Oh, vectors are indeed bad since vector concatenation is a linear time operation. My apologies to Meikel, I simply missed your remark about finger trees. I guess a version that swaps the values in place

Re: Insertion - The clojure way

2010-12-30 Thread Andreas Kostler
On 30/12/2010, at 8:40 PM, Mark Engelberg wrote: On Thu, Dec 30, 2010 at 3:24 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: Oh, vectors are indeed bad since vector concatenation is a linear time operation. My apologies to Meikel, I simply missed your remark about finger

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Wed, Dec 29, 2010 at 9:31 PM, Mark Engelberg mark.engelb...@gmail.com wrote: So here's the answer to the puzzle I posed earlier I just realized that the append function in my code was unnecessary, since into serves the same purpose. Thus my solution could be rewritten as: (defn insert

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 3:49 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: Isn't that the problem though? This will make the best case inefficient since the work performed by into is proportional to the length of v2 (or v1 if you swap them around). Therefore, even thought the

Re: Insertion - The clojure way

2010-12-30 Thread Andreas Kostler
On 30/12/2010, at 8:54 PM, Mark Engelberg wrote: On Thu, Dec 30, 2010 at 3:49 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: Isn't that the problem though? This will make the best case inefficient since the work performed by into is proportional to the length of v2 (or v1 if you

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 4:01 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: Oh of course. I apologise. Mark do you mind to lay out how you perform your benchmarks. On my system (insertion-sort (into [] (range 1))) runs for an unacceptable amount of time (talking ~10s) That

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 4:01 AM, Andreas Kostler andreas.koestler.le...@gmail.com wrote: With the initial implementation, using binary search to find the insertion point should still result in a speed up, right? Sure, that should help, although it doesn't change the overall quadratic bound

an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Sunil S Nandihalli
Hello everybody, An object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise .. Is this way by design? can it be made to behave like a hash-map without any performance penalty in terms of behaving like a function? Thanks, Sunil. -- You

Re: type hinting the arguments of a function ..

2010-12-30 Thread Sunil S Nandihalli
thanks David and Ben for you responses.. Sunil. On Wed, Dec 29, 2010 at 9:47 PM, David Nolen dnolen.li...@gmail.com wrote: On Wed, Dec 29, 2010 at 10:48 AM, B Smith-Mannschott bsmith.o...@gmail.com wrote: - (defn f [[^double x]] x) The compiler (1.3) does not complain about this, though I

Re: Insertion - The clojure way

2010-12-30 Thread David Nolen
On Thu, Dec 30, 2010 at 5:34 AM, Mark Engelberg mark.engelb...@gmail.comwrote: On Wed, Dec 29, 2010 at 11:31 PM, David Nolen dnolen.li...@gmail.com wrote: The original algorithm is simply wrong for very large inputs, it cannot be TCO'ed. Pick a ridiculously large list size and the

Re: Insertion - The clojure way

2010-12-30 Thread Daniel Brotsky
@Mark: applause. A nice pedagogical exercise, and your step-by-step approach --- so reminiscent of HTDP --- was very effective. Your final solution reminds me of an undergraduate data structures and algorithms final I took (too) many years ago on which, after weeks of doing recursive sorts and

Re: Argument is not an array, in a function inside deftype

2010-12-30 Thread Bob Shock
I don't get any errors when I run your code. This is the output: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Are you sure you are using the latest Clojure 1.2 version and not an early beta, etc.? Process finished with exit code 0 On Dec 29, 11:25 pm, Jarl Haggerty

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Chas Emerick
Yes, that's intentional – implementing IFn is (as you can see) orthogonal to implementing IPersistentMap, IPersistentCollection, etc. Of course, keyword access of record slots is most idiomatic, e.g. (:my-slot some-record) If you'd like to pass around a function that accesses a record, there's

Trick to getting bindings in a repl

2010-12-30 Thread Mike
I'm doing something kind of tricky...I'm running a REPL in my Java Swing application. I do something like: public class MyConsoleClass extends OurEmbeddedInterpreterClass { // ... // inner class private class ReplRunner extends Thread { public void run() { Namespace MYNS =

Interesting challenge

2010-12-30 Thread David Nolen
From the Qi mailing list: http://groups.google.com/group/qilang/browse_thread/thread/e4a2f534fad5032a I contend that this kind of problem cannot be solved (efficiently) in any pure functional programming language. You may disagree :D David -- You received this message because you are

Re: Interesting challenge

2010-12-30 Thread Mike Meyer
On Thu, 30 Dec 2010 12:03:14 -0500 David Nolen dnolen.li...@gmail.com wrote: From the Qi mailing list: http://groups.google.com/group/qilang/browse_thread/thread/e4a2f534fad5032a I contend that this kind of problem cannot be solved (efficiently) in any pure functional programming

Re: Argument is not an array, in a function inside deftype

2010-12-30 Thread Jarl Haggerty
I'm using the maven plugin so I think I'm using the lastest 1.2, and I've tried every 1.3 version, but I just got a hold of my laptop, and I am having no problems on there. I was having several other problems too(I started another discussion complaining about a whittled down version of this

Time/size bounded cache?

2010-12-30 Thread Miki
Hello, I'm wring a service that polls RSS feeds (using feedme). And I'd like to act only on the new entries in each feed. So far I have something like: (defn get-new-entries [seen] (let [seen? (complement seen)] (filter #(seen? (:id %)) (get-entries (defn poll [sleep-time] (loop

Boston meetup Jan 11?

2010-12-30 Thread dysinger
10 of us from Sonian are going to converge on Boston the week of Jan 9. It's always awesome to meet other Clojure hackers. I propose we meet up somewhere central(ish) Jan 11 @ 7-9pm-ish. We have room at our company headquarters in Dedham but that might be a hike for some people. Any other

Re: Insertion - The clojure way

2010-12-30 Thread Ken Wesson
On Thu, Dec 30, 2010 at 6:40 AM, Mark Engelberg mark.engelb...@gmail.com wrote: As for finger trees, I have not found them to be useful.  Although they have good theoretical bounds, they are very slow in practice. For example, if you try splitting, concatenating, and traversing lists of, say,

Re: Time/size bounded cache?

2010-12-30 Thread Chas Emerick
Java's LinkedHashMap provides the hook necessary to implement a simple LRU cache. Here's some code where we use LHM in as an LRU cache, in service of providing a variation on the memoization concept: https://gist.github.com/747395 Whether what's there is sufficient for your needs is another

Re: Time/size bounded cache?

2010-12-30 Thread Luke VanderHart
I've been working on a simple Clojure library for bounded caching and memoization. It's not quite ready for prime-time, but the simple case that you need is usable. I'll throw it up on github when I get home tonight and post the URL here. On Dec 30, 1:35 pm, Miki miki.teb...@gmail.com wrote:

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 11:01 AM, Ken Wesson kwess...@gmail.com wrote: I hope that didn't include a naive benchmarking of take/drop/concat/seq. Because three of those are lazy, you need to wrap the output of an algorithm using them in a (doall ...) and then in your timing function to get an

Re: Compiling dynamically created namespaces, without on-disk source code?

2010-12-30 Thread Stuart Sierra
You might try `(binding [*compile-files* true] ...)` around whatever code creates the namespace. Can't promise that will work. This still won't let you save definitions entered at the REPL. Once they're compiled and loaded into the JVM, the bytecode is no longer accessible. -Stuart Sierra

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Stuart Sierra
You can make it implement IFn easily enough: (defrecord Foo [a b c] clojure.lang.IFn (invoke [this key] (get this key))) It has been debated whether or not this is a good idea, design-wise, but it should not be a performance penalty. -Stuart Sierra clojure.com -- You received this

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Alex Baranosky
I've been playing with making a macro to encapsulate Stuart's post, like this: (defmacro defrecord-ifn [name args] `(defrecord ~name ~...@args clojure.lang.IFn (invoke [this key] (get this key (defrecord-ifn Foo [a b c]) (def foo (Foo. A B C)) (prn (map foo [:a :c])) = (A, C) I

Re: Boston meetup Jan 11?

2010-12-30 Thread Alyssa Kwan
Hi! You would be more than welcome at the Boston Coding Dojo (http:// www.meetup.com/boston-coding-dojo/). We meet every other Thursday at First Church in Boston, in Boston's Back Bay on Marlborough St. In January, we are meeting on 1/6 and 1/20, so nothing on the week of 1/9, I'm afraid. What

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Alex Osborne
Alex Baranosky alexander.barano...@gmail.com writes: I've been playing with making a macro to encapsulate Stuart's post, like this: (defmacro defrecord-ifn [name args]   `(defrecord ~name ~...@args     clojure.lang.IFn     (invoke [this key] (get this key (defrecord-ifn Foo [a b c])

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Alex Baranosky
Worked like a charm. Thanks Alex. -- 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

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Alyssa Kwan
Technically, there's no possibility of variable capture, but you should use gensyms: (defmacro defrecord-ifn [name args] `(defrecord ~name ~...@args clojure.lang.IFn (invoke [this# key#] (get this# key# Thanks, Alyssa On Dec 30, 9:29 pm, Alex Baranosky

Re: Boston meetup Jan 11?

2010-12-30 Thread Alex Baranosky
I'll also be at the Boston Coding Dojo sessions on the 6th and 20th, and would be willing to split the room price if you all wanted to meet during the week of the 9th-16th. Alex -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group,

Clojure in Small Pieces -- Literate Clojure

2010-12-30 Thread Tim Daly
Well, I previously commented that Advocacy is Volunteering and then I managed to advocate moving clojure to literate form. Since I'm studying the details of the inner workings of Clojure this seemed to be the right time to experiment with a literate form. I have put together the beginnings of a

Re: clojure can't see a method in my protocol

2010-12-30 Thread Ken Wesson
On Thu, Dec 30, 2010 at 7:41 PM, André Thieme splendidl...@googlemail.com wrote: Do you observe this in a fresh Clojure? I ran into something similar, but with definterface. I had a definterface form and later added new functions to it, which I could not implement before restarting the JVM, as

Re: clojure can't see a method in my protocol

2010-12-30 Thread Jarl Haggerty
I didn't think it was a problem with the clojure version because I was using the maven plugin and tried several versions, but when I got to my laptop the next day and ran the exact same programs and everything worked just fine. At this point my plan is to delete my maven repositories and if that

Do type hints cause auto casting?

2010-12-30 Thread Jarl Haggerty
I have this function (defn floor ^int [^float x] x) and (floor 1.5) returns 1.5 which confuses me as to how type hints work, I was expecting the result to be truncated or for the program to spit out some exception about expecting an int and getting a float. -- You received this message

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread Sunil S Nandihalli
thanks everybody for the responses .. with macros around ... you just have to wish for it to get it .. but we need to be careful what we wish for :) Sunil. On Fri, Dec 31, 2010 at 8:18 AM, Alyssa Kwan alyssa.c.k...@gmail.comwrote: Argh! Six minutes! :P On Dec 30, 9:42 pm, Alyssa Kwan

Re: Do type hints cause auto casting?

2010-12-30 Thread Sunil S Nandihalli
I don't think type hints lead to auto casting .. May be somebody else can throw more light on it. And it is this way by design. Sunil. On Fri, Dec 31, 2010 at 9:35 AM, Jarl Haggerty fictivela...@gmail.comwrote: I have this function (defn floor ^int [^float x] x) and (floor 1.5) returns

vsClojure Release

2010-12-30 Thread jmis
The first release of vsClojure is now available in the Visual Studio Gallery. You can download it using the extension manager in Visual Studio 2010 and searching for vsClojure. There should be no manual setup and the extension will work with the Visual Studio 2010 Shell. This release focused on

Re: an object of class created using defrecord does not implement IFn .. while it behaves very similar to map otherwise ..

2010-12-30 Thread André Thieme
Am 31.12.2010 03:29, schrieb Alex Baranosky: I've been playing with making a macro to encapsulate Stuart's post, like this: (defmacro defrecord-ifn [name args] `(defrecord ~name ~...@args clojure.lang.IFn (invoke [this key] (get this key (defrecord-ifn Foo [a b c]) (def foo

Re: Do type hints cause auto casting?

2010-12-30 Thread Jarl Haggerty
I think I asked the wrong question, not only that but I guess I answered the question I asked, what I want to know is what exactly is a type hint. I think I've failed to understand exactly what a type hint is, I assumed to give a hint was to statically type something but that doesn't seem to be

Chunking is making my life more difficult.

2010-12-30 Thread ehanneken
I spent a long time debugging some Clojure code yesterday. The essence of it looked similar to this: (defn items [] (mapcat expensive-function (range 0 4000 100))) . . . (take 5 (items)) . . . expensive-function is a function that issues an HTTP GET to retrieve a vector of data. Since

Re: Chunking is making my life more difficult.

2010-12-30 Thread Ken Wesson
On Fri, Dec 31, 2010 at 12:25 AM, ehanneken ehanne...@pobox.com wrote: I spent a long time debugging some Clojure code yesterday.  The essence of it looked similar to this: (defn items []  (mapcat expensive-function (range 0 4000 100))) . . . (take 5 (items)) . . . expensive-function is a

Re: Insertion - The clojure way

2010-12-30 Thread Ken Wesson
On Thu, Dec 30, 2010 at 4:19 PM, Mark Engelberg mark.engelb...@gmail.com wrote: On Thu, Dec 30, 2010 at 11:01 AM, Ken Wesson kwess...@gmail.com wrote: I hope that didn't include a naive benchmarking of take/drop/concat/seq. Because three of those are lazy, you need to wrap the output of an

Re: Chunking is making my life more difficult.

2010-12-30 Thread Chas Emerick
On Fri, Dec 31, 2010 at 12:25 AM, ehanneken ehanne...@pobox.com wrote: I spent a long time debugging some Clojure code yesterday. The essence of it looked similar to this: (defn items [] (mapcat expensive-function (range 0 4000 100))) . . . (take 5 (items)) . . . expensive-function

Re: Insertion - The clojure way

2010-12-30 Thread Mark Engelberg
On Thu, Dec 30, 2010 at 9:50 PM, Ken Wesson kwess...@gmail.com wrote: Are these searches, which should be log n? Or full (e.g. in-order) traversals? I'm talking about full traversals. Finger trees are sequences, and after building the sequence, splitting, concatenating, or whatever, I find I

Re: Clojure in Small Pieces -- Literate Clojure

2010-12-30 Thread Mark Engelberg
I find this exciting! Thanks for starting this. -- 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

Re: How to Build Slim Version of clojure-contrib

2010-12-30 Thread OGINO Masanori
Hello. Thank you for response, Stuart Sierra. I'm looking forward to complete new build configuration work and I'll use little build script for a while :-) Thank you. 2010/12/30, Stuart Sierra the.stuart.sie...@gmail.com: Currently, clojure-contrib's pom.xml is configured to build source-only

java/Clojure MPI ..

2010-12-30 Thread Sunil S Nandihalli
Hello everybody, I am looking for parallel programming libraries in Clojure. I found JavaMPI but its website does not seem to be updated since 2003. I would love to hear anything about where Java stands in distributed parallel computing. I get the feeling that the Parallel colt libraries are just