Re: ANN: Jark 0.3 (using the nrepl protocol)
Chas, Thanks for nREPL. It is a very useful tool. -- isaac http://icylisper.in -- 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: ANN: Jark 0.3 (using the nrepl protocol)
Yeah, nrepl support for CCW, which Chas personnally did, has been an incredibly valuable addition. I'm glad to see more tools adopting it for backend support ! 2011/5/7 isaac praveen : > Chas, > > Thanks for nREPL. It is a very useful tool. > > -- > isaac > http://icylisper.in > > -- > 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: ANN: Jark 0.3 (using the nrepl protocol)
On Sat, May 7, 2011 at 5:50 PM, Laurent PETIT wrote: > Yeah, nrepl support for CCW, which Chas personnally did, has been an > incredibly valuable addition. > > I'm glad to see more tools adopting it for backend support ! > I agree. Also, the nrepl-server itself should be bundled with some basic utilities. That is where jark is useful. Jark is a tool that provides a) a nrepl-server b) a set of extensible utilities to manage classpaths, namespaces, JVM both on c) a command-line client that communicates via the nREPL protocol, has minimum runtime dependencies and can run on most platforms. It would be nice to have a jark/nREPL plus SLIME/Vim stack. -- isaac http://icylisper.in -- 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: ANN: Jark 0.3 (using the nrepl protocol)
> b) a set of extensible utilities to manage classpaths, namespaces, JVM both > on Oops. I meant : A set of extensible utilities to manage classpaths, namespaces, JVM etc , remotely. -- isaac -- 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: ANN: Jark 0.3 (using the nrepl protocol)
On May 7, 2011, at 10:01 AM, isaac praveen wrote: > On Sat, May 7, 2011 at 5:50 PM, Laurent PETIT wrote: >> Yeah, nrepl support for CCW, which Chas personnally did, has been an >> incredibly valuable addition. >> >> I'm glad to see more tools adopting it for backend support ! >> > > I agree. Indeed, this was exactly my intention when I set out to build nREPL. So, we now have Eclipse/CCW, jark, and Enclojure (soon: http://groups.google.com/group/enclojure/msg/a742dd461c88109b) using nREPL; such common ground will certainly make it easier to support having diverse toolsets in teams of Clojure programmers, etc. On May 6, 2011, at 7:37 PM, Ambrose Bonnaire-Sergeant wrote: > We haven't started on a VimClojure nREPL fork yet. > > We should probably ask Meikel if he's already tackled it, there is a "nrepl" > tag on > bitbucket but it's about 6 months old. > https://bitbucket.org/kotarak/vimclojure/overview My recollection is that Meikel was a fair ways along in his nREPL implementation late last year. Hopefully he can chime in as to what the current status is of things there. > Also, the nrepl-server itself should be bundled with some basic > utilities. That is where jark is useful. > > Jark is a tool that provides > a) a nrepl-server > b) a set of extensible utilities to manage classpaths, namespaces, JVM both > on > c) a command-line client that communicates via the nREPL protocol, has > minimum runtime dependencies and can run on most platforms. > > It would be nice to have a jark/nREPL plus SLIME/Vim stack. nREPL + jark + some baseline set of introspection utilities and such (started to be described here: http://dev.clojure.org/display/design/IDE+tooling+backend) is looking like a proper foundation for Clojure tooling, regardless of platform/editor/etc. FWIW, I'd like to throw out the notion that perhaps some small part of jark might make sense to be rolled into the nREPL project itself (in particular, a command-line interface / client is needed -- there's one there, but it's far from ideal). Further, if the jark leads are open to it, it may be worth discussing over on clojure-dev to see what the appetite is among the core folks for a Clojure Contrib project with jark's objectives/scope. Cheers, - Chas -- 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
What is the purpose of the Identity function?
At the risk of sounding completely dense, I am having a hard time understanding the purpose of the Identity function. As far as I can tell all it does is return what is passed to it. Review code I see it used all the time, and cannot understand why it is needed. Any insight? Thanks Base -- 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: What is the purpose of the Identity function?
My two cents: You can use it with the operator ->, in order to pass something to another function, or for propagating an input of some sort. It sounds sensed? Bye, Alfredo -- 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: What is the purpose of the Identity function?
I usually use identity as a predicate for functions such as filter, drop-while, take-while, etc. Consider this silly example: imagine you had an operation that fetches stuff from a resource (DB, network, etc.) and that upon failing it returns nil. Additionally, imagine that you're interested in running this operation for several resources and keeping those values which didn't fail. You can do so with identity: user=> (defn my-operation-that-might-fail [x] (if (= x "foo") x nil)) #'user/my-operation-that-might-fail user=> (def some-values ["bar" "foo" "baz"]) #'user/some-values user=> (filter identity (map your-pred some-values)) ("foo") user=> and you have your single operation that didn't fail. My 0.5cts. U -- 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: What is the purpose of the Identity function?
I just grepped the clojure source code and an interesting use is in walk.clj https://github.com/clojure/clojure/blob/master/src/clj/clojure/walk.clj#L62 `walk` has flexibility with higher order functions, but identity helps with the simple case of just returning the forms elegantly. I thought it was cool :) Ambrose On Sat, May 7, 2011 at 11:51 PM, Base wrote: > At the risk of sounding completely dense, I am having a hard time > understanding the purpose of the Identity function. As far as I can > tell all it does is return what is passed to it. > > Review code I see it used all the time, and cannot understand why it > is needed. > > Any insight? > > Thanks > > Base > > -- > 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: ANN: Jark 0.3 (using the nrepl protocol)
Hi, Am 07.05.2011 um 16:48 schrieb Chas Emerick: >> We haven't started on a VimClojure nREPL fork yet. >> >> We should probably ask Meikel if he's already tackled it, there is a "nrepl" >> tag on >> bitbucket but it's about 6 months old. >> https://bitbucket.org/kotarak/vimclojure/overview > > My recollection is that Meikel was a fair ways along in his nREPL > implementation late last year. Hopefully he can chime in as to what the > current status is of things there. Ah. Sad story. I already worked in the nrepl backend for vimclojure—as Ambrose noted: there is a branch on bitbucket for that. However things stalled. The reason is the client. There I have these stupid vim limitations again: * It must be fast. * It must be self-contained. * It must work on Windows. *bleh* The first point kills a Java client. The JVM startup time is too slow. The second kills netcat, curl and friends. The client has to understand the protocol in order to know, when to stop the connection and terminate itself. Until the client terminates vim will be blocked. The third point kills all the “standard” scripting languages like Python, Ruby, Perl, you name it. I don't want to add a 30Mb dependency when a 30k client was sufficient with nailgun. So what I need is: A client understanding the protocol and looking for the “done” message. It must be fast and small. So it will be likely written in something like C, OCaml or Haskell and compiled to native binary. It doesn't come with more dependencies than itself. I might come up with a C or OCaml version for the Unices, but I have absolutely no clue about Windows programming. Something like OCaml would maybe even work verbatim on Windows, but I haven't got native compilation to work there. And finally I'm missing time right now to do this by myself. (As always… *sigh*) When I read about jark+nrepl+cli client, I thought “*dumdidum* someone will do it *dumdidum* someone will do it” ;) I appreciate any help and I'm willing to help out with support on answering questions and posing setting-hair-on-fire requirements. Sincerely Meikel PS (general note): If you want to hack on VimClojure – especially with such difficult and essential issue as a different communication channel – I'd appreciate to be kept in the loop. I can save time by knowing caveats and obstacles. And – frankly – I'd like to know what modifications of VC are going on out there. Feel free to discuss such things on the VimClojure goggle group. Thank you. -- 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: What is the purpose of the Identity function?
Hi, you can also use it to do funny stuff with juxt. (map (juxt identity f) some-seq) Sincerely Meikel -- 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: ANN: Jark 0.3 (using the nrepl protocol)
Thanks for letting us know Meikel. These are similar issues that we have encountered with the jark client. We are planning to rewrite it in Haskell (currently Python), I'm sure there will be similarities between a potential VimClojure client. I have tried to tinker with VimClojure but sadly never got it building with gradle+clojuresque. I will have another go soon. What version of gradle (and clojuresque) is VimClojure known to build with? Thanks, Ambrose On Sun, May 8, 2011 at 12:20 AM, Meikel Brandmeyer wrote: > Hi, > > Am 07.05.2011 um 16:48 schrieb Chas Emerick: > > >> We haven't started on a VimClojure nREPL fork yet. > >> > >> We should probably ask Meikel if he's already tackled it, there is a > "nrepl" tag on > >> bitbucket but it's about 6 months old. > https://bitbucket.org/kotarak/vimclojure/overview > > > > My recollection is that Meikel was a fair ways along in his nREPL > implementation late last year. Hopefully he can chime in as to what the > current status is of things there. > > Ah. Sad story. I already worked in the nrepl backend for vimclojure—as > Ambrose noted: there is a branch on bitbucket for that. However things > stalled. The reason is the client. There I have these stupid vim limitations > again: > > * It must be fast. > * It must be self-contained. > * It must work on Windows. *bleh* > > The first point kills a Java client. The JVM startup time is too slow. The > second kills netcat, curl and friends. The client has to understand the > protocol in order to know, when to stop the connection and terminate itself. > Until the client terminates vim will be blocked. The third point kills all > the “standard” scripting languages like Python, Ruby, Perl, you name it. I > don't want to add a 30Mb dependency when a 30k client was sufficient with > nailgun. > > So what I need is: A client understanding the protocol and looking for the > “done” message. It must be fast and small. So it will be likely written in > something like C, OCaml or Haskell and compiled to native binary. It doesn't > come with more dependencies than itself. > > I might come up with a C or OCaml version for the Unices, but I have > absolutely no clue about Windows programming. Something like OCaml would > maybe even work verbatim on Windows, but I haven't got native compilation to > work there. > > And finally I'm missing time right now to do this by myself. (As always… > *sigh*) > > When I read about jark+nrepl+cli client, I thought “*dumdidum* someone will > do it *dumdidum* someone will do it” ;) I appreciate any help and I'm > willing to help out with support on answering questions and posing > setting-hair-on-fire requirements. > > Sincerely > Meikel > > PS (general note): If you want to hack on VimClojure – especially with such > difficult and essential issue as a different communication channel – I'd > appreciate to be kept in the loop. I can save time by knowing caveats and > obstacles. And – frankly – I'd like to know what modifications of VC are > going on out there. Feel free to discuss such things on the VimClojure > goggle group. Thank you. > > -- > 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: ANN: Jark 0.3 (using the nrepl protocol)
Chas, > nREPL + jark + some baseline set of introspection utilities and such (started > to be described here: > http://dev.clojure.org/display/design/IDE+tooling+backend) is looking like a > proper foundation for Clojure tooling, regardless of platform/editor/etc. Awesome. > FWIW, I'd like to throw out the notion that perhaps some small part of jark > might make sense to be rolled into the nREPL project itself (in particular, a > command-line interface / client is needed -- there's one there, but it's far > from ideal). Sounds like a good idea. We could discuss further on what can be integrated. I am excited about this! > Further, if the jark leads are open to it, it may be worth discussing over on > clojure-dev to see what the appetite is among the core folks for a Clojure > Contrib project with jark's objectives/scope. Sure. We need very powerful clojure development and deployment tools. My request for subscription to clojure-dev got declined :( Maybe we can discuss this on clojure-jark google groups: https://groups.google.com/group/clojure-jark -- isaac http://icylisper.in -- 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: ANN: Jark 0.3 (using the nrepl protocol)
2011/5/7 isaac praveen : > On Sat, May 7, 2011 at 5:50 PM, Laurent PETIT wrote: >> Yeah, nrepl support for CCW, which Chas personnally did, has been an >> incredibly valuable addition. >> >> I'm glad to see more tools adopting it for backend support ! >> > > I agree. > > Also, the nrepl-server itself should be bundled with some basic > utilities. That is where jark is useful. > > Jark is a tool that provides > a) a nrepl-server > b) a set of extensible utilities to manage classpaths, namespaces, JVM both > on > c) a command-line client that communicates via the nREPL protocol, has > minimum runtime dependencies and can run on most platforms. Just a question. The general philosophy of clojure is to have good base building tools, and maybe the "building blocks" of more integrated solutions could also be based on the same philosophy. I mean, all the points listed in b) could / should / may (?) not be tied to nrepl-server, should ? Couldn't they live in their own library ? Of course, I can see the value of having all of this pre-packaged for ease of use ! > > It would be nice to have a jark/nREPL plus SLIME/Vim stack. > > -- > isaac > http://icylisper.in > > -- > 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: ANN: Jark 0.3 (using the nrepl protocol)
Maybe a silly question, but anyway ... for CCW, there is this idea of having it maintain, for each open project (probably depending on a flag, but that's out of topic), in the background (totally transparently for the user), a running JVM environment where CCW would maintain the project classes and namespaces loaded and up-to-date. Thus CCW would be able to suggest code completion, report errors, etc., without having to rely on/interfere with the JVMs the user may have started for his own needs. Of course, it would be desirable to be able to not blow all the user's computer memory ... so maybe having the ability to share JVM between several open projects in the IDEA, while keeping isolated different clojure environments, would be a plus. I had the idea of investigating what the project classlojure has to provide for this ... but maybe Jark would also be worth studying for this purpose, or would it not be the appropriate tool for the job ? 2011/5/5 isaac praveen : > Hi, > > It is a pleasure to announce the release of Jark 0.3, today. > > Why Jark? > Startup time of the Java Virtual Machine(JVM) is too slow and thereby > command-line applications on the JVM are sluggish and very painful to > use. > Jark is an attempt to run a persistent JVM daemon and provide a set of > utilities to control and operate on it. > It should help in deploying clojure applications on the JVM, running > command-line applications written in clojure and remote-debugging. > > The motivation is also to provide a very thin nrepl-client that can > run on any given OS platform. Maybe one on the Android. The client > host need not even have the JRE installed. The current implementation > is in python(2.6 or 2.7) as a proof-of-concept and runs only on > GNU/Linux and Mac OSX. > > Get started: http://icylisper.in/jark/start.html > > Jark has utilites for: > a. Operating and tuning the JVM > b. Managing classpaths > c. Managing packages and repositories that are not project-specific (uses > cljr) > d. Scripting (#!/usr/bin/env jark) and namespaces. > All of which can be done remotely. > > This is a sample usage: > server> jark vm start [--port] > client> jark vm connect [--host] [--port] > client> jark repl > --- > client> jark vm stat > client> jark cp list > server> jark cp add > client> jark package install -p PACKAGE -v VERSION > client> jark ns load /path/to.clj > and so on .. > > The earlier version (0.2) of jark used nailgun as a proof-of-concept > server and client. The current release (0.3) of jark uses Chas > Emerick's nrepl protocol for communication. I hope to rewrite the > client in haskell, so native binaries can be generated, sometime soon. > Have a look at the roadmap: > Roadmap: http://icylisper.in/jark/roadmap.html > > Mailing list: https://groups.google.com/group/clojure-jark > code: https://github.com/icylisper/jark.git > > Special thanks to: > * Ambrose Bonnaire-Sergeant (for collaborating and providing very > interesting ideas) > * Bangalore-clojure group members for continuous feedback: > Shantanu Kumar > Abhijith Gopal > Martin Demello > Abhijit Hoskeri > * other early jark users for valuable ideas and fixes > > Thats all folks! Hope you find it useful. > Screencasts and demos are on the way ... > -- > isaac > http://icylisper.in > > -- > 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: ANN: Jark 0.3 (using the nrepl protocol)
On Sat, May 7, 2011 at 12:50 PM, isaac praveen wrote: > Sure. We need very powerful clojure development and deployment tools. > My request for subscription to clojure-dev got declined :( > Send in a CA! :) 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: What is the purpose of the Identity function?
On Sat, May 7, 2011 at 8:51 AM, Base wrote: > At the risk of sounding completely dense, I am having a hard time > understanding the purpose of the Identity function. As far as I can > tell all it does is return what is passed to it. It's most useful when you have functions that take functions as arguments. For example, I have code that performs a SQL query and then runs a map-reduce transformation on that. Sometimes, however, I want just the original data so I can pass in identity (to map) and have it be a "no-op". Identity on its own isn't really useful - but in combination with higher-order functions, it can be very indispensible! -- Sean A Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ World Singles, LLC. -- http://worldsingles.com/ Railo Technologies, Inc. -- http://www.getrailo.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: What is the purpose of the Identity function?
Ahhh - Thanks all. Most educational! This does make sense - I will try and deconstruct some of the examples where this is used to get a sense of when / why it is used. But this helps *tremendously*!! Thanks!!! On May 7, 2:09 pm, Sean Corfield wrote: > On Sat, May 7, 2011 at 8:51 AM, Base wrote: > > At the risk of sounding completely dense, I am having a hard time > > understanding the purpose of the Identity function. As far as I can > > tell all it does is return what is passed to it. > > It's most useful when you have functions that take functions as > arguments. For example, I have code that performs a SQL query and then > runs a map-reduce transformation on that. Sometimes, however, I want > just the original data so I can pass in identity (to map) and have it > be a "no-op". > > Identity on its own isn't really useful - but in combination with > higher-order functions, it can be very indispensible! > -- > Sean A Corfield -- (904) 302-SEAN > An Architect's View --http://corfield.org/ > World Singles, LLC. --http://worldsingles.com/ > Railo Technologies, Inc. --http://www.getrailo.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: What is the purpose of the Identity function?
On Sat, 7 May 2011 12:09:45 -0700 Sean Corfield wrote: > Identity on its own isn't really useful - but in combination with > higher-order functions, it can be very indispensible! Bingo. An HOF accepts a function that filters/mogrifies data before processing it in some way. Sometimes, you *don't* want to have that extra step. There are two ways to do that: one is to have two variants of the HOF - one which uses the function, and one which doesn't (which may mean it's not an HOF). The other is identity. Clojure does both, depending. You can see the first in sort and sort-by, where sort-by uses a keyfn to extract keys from items in the collection. You could just identity for the keyfn to sort by items, but this case is so common it gets it's own function - sort. Similarly, filter takes a predicate to check which items need to be removed. If you just want to remove false values, the appropriate predicate is identity. This case isn't very common, so there's no second version. http://www.mired.org/ Independent Software developer/SCM consultant, email for more information. O< ascii ribbon campaign - stop html mail - www.asciiribbon.org -- 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
How Clojure protocols are implemented internally?
Is there a document describing internal implementation of Clojure protocols? I.e. what is happening "under the hood"? To be specific suppose I have extended ICountable protocol with a single "count" method to String class. What happens when I call (count "some string")? At what point dynamic dispatch happens and what underlying JVM mechanism is used? - Dmitry -- 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: Enhancement for contrib.command-line
Thanks, this library looks promising... On 29 Apr., 21:56, gaz jones wrote: > i wrote a command line arg library after wanting a bit more than the > one in contrib gave me: > > https://github.com/gar3thjon3s/clargon > > i think you could do what you want using it... > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: How Clojure protocols are implemented internally?
See: http://clojure.org/protocols "defprotocol will automatically generate a corresponding interface" Although it is not true that a protocol is equivalent to an interface. For deep "under the hood" you can check out the source: https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_deftype.clj#L521 As for your specific case: clojure.core/count uses clojure.lang.RT/count [1] This function goes through some type checks, the first one being if the type implements clojure.lang.Counted [2] and if it is, calls the count function implemented in that type. [1] https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/RT.java#L505 [2] https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Counted.java On Sat, May 7, 2011 at 10:00 PM, Dmitry Kakurin wrote: > Is there a document describing internal implementation of Clojure > protocols? > I.e. what is happening "under the hood"? > To be specific suppose I have extended ICountable protocol with a > single "count" method to String class. What happens when I call (count > "some string")? > At what point dynamic dispatch happens and what underlying JVM > mechanism is used? > > - Dmitry > > -- > 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: How Clojure protocols are implemented internally?
Let me rephrase my question to avoid unfortunate confusion with standard "count" function: Suppose I have extended my own IMyCountable protocol with a single "mycount" method to String class. What happens when I call (mycount "some string")? - Dmitry On May 7, 1:42 pm, Jonathan Fischer Friberg wrote: > See:http://clojure.org/protocols > "defprotocol will automatically generate a corresponding interface" > Although it is not true that a protocol is equivalent to an interface. > > For deep "under the hood" you can check out the > source:https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_d... > > As for your specific case: > clojure.core/count uses clojure.lang.RT/count [1] > This function goes through some type checks, the first one being if the type > implements clojure.lang.Counted [2] and if it is, calls the count function > implemented in that type. > > [1]https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/R... > [2]https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/C... > > On Sat, May 7, 2011 at 10:00 PM, Dmitry Kakurin > wrote: > > > > > > > > > Is there a document describing internal implementation of Clojure > > protocols? > > I.e. what is happening "under the hood"? > > To be specific suppose I have extended ICountable protocol with a > > single "count" method to String class. What happens when I call (count > > "some string")? > > At what point dynamic dispatch happens and what underlying JVM > > mechanism is used? > > > - Dmitry > > > -- > > 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
Request for feedback: Tradui
Hi all, I've started development on tradui, a translator for the Creole markup language. It is not finished or in any deployable shape or form yet, however it's progressed enough to gather some feedback on the approach taken. Please feel free to clone https://github.com/AndreasKostler/tradui.git and comment away. Kind Regards Andreas -- 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
Testing functions that access a database
I'm looking for some input as to the best way to test functions that interact with a database. I've just started writing some tests for functions that read/write to a mysql database (using clojure.contrib.sql) but my problem is that I'd like the tests to begin with either an empty database or one that has been initialized with some known data. Some of my functions add/remove data from the database and so some of these tests will fail if run again on the changed database. I was thinking I'd have a fixture that loaded a mysql dump file before running the tests but I haven't found any way to do this in Clojure. Any suggestions? -- 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: Testing functions that access a database
On Sat, May 7, 2011 at 11:37 PM, Tim McIver wrote: > I'm looking for some input as to the best way to test functions that > interact with a database. I've just started writing some tests for > functions that read/write to a mysql database (using > clojure.contrib.sql) but my problem is that I'd like the tests to > begin with either an empty database or one that has been initialized > with some known data. Some of my functions add/remove data from the > database and so some of these tests will fail if run again on the > changed database. I was thinking I'd have a fixture that loaded a > mysql dump file before running the tests but I haven't found any way > to do this in Clojure. Any suggestions? Have you considered using a mock object in place of the db? -- 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
Where's incanter chrono?
Hello all, Has incanter.chrono disappeared? (use '(incanter core chrono)) results in Could not locate incanter/chrono__init.class or incanter/chrono.clj on classpath: [Thrown class java.io.FileNotFoundException] For both incanter 1.2.3 and incanter 1.2.2 Cheers Andreas -- 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: ANN: Java dependency injection in Clojure
Hi Alessio, My plan is to use this to wrap other Java frameworks to simplify their APIs. Internally, we started to use it to wrap Java libs as sets of resources accessible from Clojure and it simplifies things a lot. I have some ideas about wrapping Swing that I will experiment this summer. If you have suggestions, they are welcomed. I saw DynaSpring but lacked the time to go trough it throughly. I will have more time in the next month to look at it deeper. Thanx, Luc P. On Wed, 4 May 2011 02:21:05 -0700 (PDT) Alessio Stalla wrote: > On 4 Mag, 06:53, Luc Prefontaine wrote: > > Hi, > > > > being tired of wandering through a few thousand lines of XML Spring > > bean definitions, I finally wrote a library to start moving away > > from Spring/XML. It's definitively nicer doing dependency > > injection/auto-wiring using Clojure. > > > > This is part of our global effort here to confine Java as much as > > possible to lower layers. > > > > Lacking imagination (or being lazy ?), I called it boing. The > > source code is available athttps://github.com/lprefontaine/Boing > > and the Wiki there describes its scope and capabilities. > > > > It's a 1.0 version. It should make it to prod beginning of this > > summer. > > > > The jar is on Clojars ([org.clojars.lprefontaine/boing "1.0"] in > > leiningen). > > > > It may be of interest to people having mixed environments and > > potentially to some using external Java libraries. It's much more > > dynamic than XML and significantly shorter. Look at the examples > > folder. > > > > Comments are welcomed. The TODO list is not yet published but we > > see a few things we want to add to it especially in the area of > > resource management and some optimizations. > > > > Code wise I think it's not too horrible given that I had to squeeze > > this in my already ultra-tight schedule in the last three weeks or > > so. > > That's really nice! I did something similar in Common Lisp, called > DynaSpring [1]. I think this kind of thing fits Lisp perfectly, and > it's nice to see an implementation of similar ideas in Clojure. > Perhaps we can mutually take inspiration from each other's projects > and, why not, even share some code and ideas. Right now I'm not > actively developing it because I'm no longer using Spring at work, but > still I like the concept and hope to use it on a real project sooner > or later. > > I wish you well for boing! > Alessio > > [1] code.google.com/p/dynaspring/ > -- Luc P. The rabid Muppet -- 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: How Clojure protocols are implemented internally?
On May 7, 11:28 pm, Dmitry Kakurin wrote: > Let me rephrase my question to avoid unfortunate confusion with > standard "count" function: > Suppose I have extended my own IMyCountable protocol with a > single "mycount" method to String class. What happens when I call > (mycount > "some string")? [snip..] This is my (i.e. non authoritative) guess. defprotocol generates an interface and dispatch functions for each of your protocol functions. The dispatch function is a level of indirection between your (mycount "some string") and the actual call of your implementation. When you extend the protocol to reach a type there are two cases 1) if you are simultaneously defining a new type and extending the protocol, the underlying new class of the type can directly implement the interface. The dispatch function simply calls the appropriate interface method directly on the object (first argument of the protocol function). 2) (your case) you are extending an existing type. This dispatch function is changed to take account if this new case (I believe the dispatch is a switch on the class of the first argument to the protocol function). I could be wrong, but I don't think it is that far. Kind Regards, - Karl -- 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