Re: evaluating compiled clojurescript functions at the REPL
Link? (2013/10/13 14:14), Benjamin Vulpes wrote: Hey all! I've written a S.O. question about Emacs/ClojureScript REPL integration. My basic question is: how ams call compiled functions and execute in browser context? I love working with Emacs and I also love all of the work that everyone has put into building a robust Emacs/CLJ* toolchain, and really look forward to any tips anyone has to share on getting all of the nrepl.el functionality in a browser-executing cljs repl. Thanks! --vulpes -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [ClojureScript] Re: evaluating compiled clojurescript functions at the REPL
That would be useful data, eh? http://stackoverflow.com/questions/19342066/evaluating-compiled-clojurescript-functions-at-the-repl On Sat, Oct 12, 2013 at 11:36 PM, Dave Della Costa ddellaco...@gmail.comwrote: Link? (2013/10/13 14:14), Benjamin Vulpes wrote: Hey all! I've written a S.O. question about Emacs/ClojureScript REPL integration. My basic question is: how ams call compiled functions and execute in browser context? I love working with Emacs and I also love all of the work that everyone has put into building a robust Emacs/CLJ* toolchain, and really look forward to any tips anyone has to share on getting all of the nrepl.el functionality in a browser-executing cljs repl. Thanks! --vulpes -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups ClojureScript group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescr...@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Clojure vs OSGi once again...
Hey all, Once again I'm lending my hand at trying to get some clojure code working under OSGi, and once again hitting issues with the good ole class loader. I have a simple OSGi bundle project which embeds clojure.jar, and contains a single source file: (ns com.theoryinpractise.activator.osgi.components (:import (org.osgi.framework BundleActivator))) (deftype MyActivator [] BundleActivator (start [this context] (println Hello from service)) (stop [this context] (println stopping))) In my OSGi metadata I have `com.theoryinpractise.activator.osgi.components.MyActivator` listed as the `Bundle-Activator` for the bundle, and when I load it I get the following exception: Caused by: java.lang.ExceptionInInitializerError at com.theoryinpractise.activator.osgi.components.MyActivator.clinit(components.clj:4) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4336) at org.apache.felix.framework.Felix.activateBundle(Felix.java:2141) ... 32 more Caused by: java.io.FileNotFoundException: Could not locate clojure/core__init.class or clojure/core.clj on classpath: at clojure.lang.RT.load(RT.java:443) at clojure.lang.RT.load(RT.java:411) at clojure.lang.RT.doInit(RT.java:447) at clojure.lang.RT.clinit(RT.java:329) ... 40 more java.lang.ExceptionInInitializerError When I look at the decompiled class ( using JD-GUI ) I see there's a static initialiser pulling in the `println` function: public final class MyActivator implements BundleActivator, IType { public static final Var const__0 = (Var)RT.var(clojure.core, println); … Tracing this down into `RT.baseLoader()`: static public ClassLoader baseLoader(){ if(Compiler.LOADER.isBound()) return (ClassLoader) Compiler.LOADER.deref(); else if(booleanCast(USE_CONTEXT_CLASSLOADER.deref())) return Thread.currentThread().getContextClassLoader(); return Compiler.class.getClassLoader(); } I find that `Compiler.LOADER.isBound()` is false, and `booleanCast(USE_CONTEXT_CLASSLOADER.deref())` is true, which leads to using the class loader for the OSGi runtime and *not* the class loader that happens to actually know anything about Clojure, which would be the OSGi Bundle classloader for my package. Does anyone know of a way around this? Or will I need to give up on trying to use pure-clojure here and use Java for my activator, and call `Compiler.LOADER.set(myclassloader)` and then do some `RT.*` love? Cheers, Mark signature.asc Description: OpenPGP digital signature
Re: ANN: lein-midje-doc 0.0.9 released
Hi Tim. That is a strange message. I am using conch to shell out to pygments which does the syntax highlighting. I'm not sure why that library is not compiling. What operating system are you using? -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Also.. What version of clojure are you using? I'll try with that and see if I can reproduce the error. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure vs OSGi once again...
Hi Marc, The clojure.osgi library aims at easing the pain in this area ( https://github.com/aav/clojure.osgi ). But to be honest I don't really know it's current status. For Counterclockwise, I've taken inspiration from clojure.osgi and integrated the core concepts into a few classes. In a nutshell, every entry point to the clojure world (especially for loading namespaces -potentially lazily thanks to eclipse lazy plugins infrastructure-) is wrapped in a call that ensures that as much dynamic bindings as possible are established, as well as the context class loader set. You can see all this by looking at the activator for counterclockwise. HTH, Laurent Le dimanche 13 octobre 2013, Mark Derricutt a écrit : Hey all, Once again I'm lending my hand at trying to get some clojure code working under OSGi, and once again hitting issues with the good ole class loader. I have a simple OSGi bundle project which embeds clojure.jar, and contains a single source file: (ns com.theoryinpractise.activator.osgi.components (:import (org.osgi.framework BundleActivator))) (deftype MyActivator [] BundleActivator (start [this context] (println Hello from service)) (stop [this context] (println stopping))) In my OSGi metadata I have com.theoryinpractise.activator.osgi.components.MyActivator listed as the Bundle-Activator for the bundle, and when I load it I get the following exception: Caused by: java.lang.ExceptionInInitializerError at com.theoryinpractise.activator.osgi.components.MyActivator.clinit(components.clj:4) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4336) at org.apache.felix.framework.Felix.activateBundle(Felix.java:2141) ... 32 more Caused by: java.io.FileNotFoundException: Could not locate clojure/core__init.class or clojure/core.clj on classpath: at clojure.lang.RT.load(RT.java:443) at clojure.lang.RT.load(RT.java:411) at clojure.lang.RT.doInit(RT.java:447) at clojure.lang.RT.clinit(RT.java:329) ... 40 more java.lang.ExceptionInInitializerError When I look at the decompiled class ( using JD-GUI ) I see there's a static initialiser pulling in the println function: public final class MyActivator implements BundleActivator, IType { public static final Var const__0 = (Var)RT.var(clojure.core, println); … Tracing this down into RT.baseLoader(): static public ClassLoader baseLoader(){ if(Compiler.LOADER.isBound()) return (ClassLoader) Compiler.LOADER.deref(); else if(booleanCast(USE_CONTEXT_CLASSLOADER.deref())) return Thread.currentThread().getContextClassLoader(); return Compiler.class.getClassLoader(); } I find that Compiler.LOADER.isBound() is false, and booleanCast(USE_CONTEXT_CLASSLOADER.deref()) is true, which leads to using the class loader for the OSGi runtime and *not* the class loader that happens to actually know anything about Clojure, which would be the OSGi Bundle classloader for my package. Does anyone know of a way around this? Or will I need to give up on trying to use pure-clojure here and use Java for my activator, and call Compiler.LOADER.set(myclassloader) and then do some RT.* love? Cheers, Mark -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hi Chris, *A)* My dev environment is in a VMWare guest Ubuntu Linux Server 12.04.3 (on an OSX Host). *B)* My project's clojure version is 1.5.1. And *C)*, I have the latest version of pygments installed via apt-get. But I don't think those are the causes. That top-level error with the *seq/map-nth* function is in the *usefulhttps://clojars.org/useful * lib, used by *conch https://clojars.org/me.raynes/conch*, used by * lein-mdije-doc https://clojars.org/lein-midje-doc*. I presume that the version of useful doesn't have that particular function. Now, when using the lein-midje-doc plugin, the versions of *useful* that get pulled down, are *0.8.3-alpha8* and *0.8.5-alpha2*. However, the latest version on Clojars is *0.8.8*. Maybe using the latest version of *conch* will help. Your tool seems to use *0.5.0*. But the latest version is *0.5.2*. Tim Washington Interruptsoftware.ca / Bkeeping.com On Sun, Oct 13, 2013 at 6:01 AM, zcaudate z...@caudate.me wrote: Also.. What version of clojure are you using? I'll try with that and see if I can reproduce the error. -- -- -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [ANN] scopes: a little library for resource scopes
No, I just implemented a simple intuitive scope, which looks like it is about the same as the basic idea there. There are some interesting ideas/questions about how scopes work across threads and how consumers can pass the buck for resource clean up to an enclosing scope (like exception handling). In my case I explicitly don't handle extending scopes to child threads (for now). If the bindings convey to a child thread and you try to add an object to the current scope, then you'll get an exception for trying to set! a conveyed binding. I'm not sure about the idea for passing resource clean up to an enclosing scope. I'd have to consider the problem and potential solutions before I could form an opinion. That's not to say that these things are bad ideas or that some version of them won't end up in the library. I just wanted a minimal implementation of a scoping concept. It can evolve from there. Paul On Sat, Oct 12, 2013 at 10:11 AM, Jozef Wagner jozef.wag...@gmail.comwrote: Is it based on http://dev.clojure.org/display/design/Resource+Scopes ? On Friday, October 11, 2013 3:54:59 PM UTC+2, Paul Stadig wrote: It separates the resource management from the creation and lexical binding of resources. You can create a scope high up in the call stack, and within the dynamic extent of that scope you can create resources, return them from functions and freely use them; when the scope eventually exits, then the resources will be cleaned up. This library does also generalize a bit to allow you to register an object and a clean up function, or even just a thunk to get called when the scope exits. On Friday, October 11, 2013 7:56:52 AM UTC-4, Cedric Greevey wrote: What does this do that (with-open ...) doesn't do? Generalize to other cleanup methods than (.close x)? On Fri, Oct 11, 2013 at 6:36 AM, Paul Stadig pa...@stadig.name wrote: I have released version 0.1.0 of scopes, a little library for resource scopes. It can be used to establish a resource scope with the with-resource-scope macro. Within the dynamic extent of that macro one can register a resource with the scoped! function so that when the macrco block goes out of scope .close is called on the registered resource. An object and function can also be registered with (scoped! x (fn [x] ...)) so that when the macro block goes out of scope the function will be called and given x as an argument. There is also a shorthand function called scoped-thunk! that will register a thunk (a function taking no arguments) to be called when the macro block goes out of scope. The scopes library also defines a function named closeable? that will return true if its argument implements java.lang.AutoCloseable. Because scopes uses the java.lang.AutoCloseable interface and the exception supression mechanism, it is only compatible with Java 7. Finally, there is also a scopes-magic artifact, and when it is on the classpath it will automatically pull in the scopes library and add with-resource-scope, scoped!, scoped-thunk!, and closeable? to clojure.core so that they are automatically available everywhere with out having to be imported. I'm not saying that this is necessarily a good idea, but there it is. :) https://clojars.org/pjstadig/**scopeshttps://clojars.org/pjstadig/scopes https://clojars.org/pjstadig/**scopes-magichttps://clojars.org/pjstadig/scopes-magic Paul -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@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+u...@googlegroups.com For more options, visit this group at http://groups.google.com/**group/clojure?hl=enhttp://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/**groups/opt_outhttps://groups.google.com/groups/opt_out . -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/qPUd3AEVxT8/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit
Re: [ANN] scopes: a little library for resource scopes
In JVM, we can assume (or should implement it in a way) that objects representing resource release the resource upon object's finalize method. If you push resource into the scope, it is not GCed until the scope ends. How about pushing to scope weak refs to resources instead? JW On Sun, Oct 13, 2013 at 1:34 PM, Paul Stadig p...@stadig.name wrote: No, I just implemented a simple intuitive scope, which looks like it is about the same as the basic idea there. There are some interesting ideas/questions about how scopes work across threads and how consumers can pass the buck for resource clean up to an enclosing scope (like exception handling). In my case I explicitly don't handle extending scopes to child threads (for now). If the bindings convey to a child thread and you try to add an object to the current scope, then you'll get an exception for trying to set! a conveyed binding. I'm not sure about the idea for passing resource clean up to an enclosing scope. I'd have to consider the problem and potential solutions before I could form an opinion. That's not to say that these things are bad ideas or that some version of them won't end up in the library. I just wanted a minimal implementation of a scoping concept. It can evolve from there. Paul On Sat, Oct 12, 2013 at 10:11 AM, Jozef Wagner jozef.wag...@gmail.comwrote: Is it based on http://dev.clojure.org/display/design/Resource+Scopes ? On Friday, October 11, 2013 3:54:59 PM UTC+2, Paul Stadig wrote: It separates the resource management from the creation and lexical binding of resources. You can create a scope high up in the call stack, and within the dynamic extent of that scope you can create resources, return them from functions and freely use them; when the scope eventually exits, then the resources will be cleaned up. This library does also generalize a bit to allow you to register an object and a clean up function, or even just a thunk to get called when the scope exits. On Friday, October 11, 2013 7:56:52 AM UTC-4, Cedric Greevey wrote: What does this do that (with-open ...) doesn't do? Generalize to other cleanup methods than (.close x)? On Fri, Oct 11, 2013 at 6:36 AM, Paul Stadig pa...@stadig.name wrote: I have released version 0.1.0 of scopes, a little library for resource scopes. It can be used to establish a resource scope with the with-resource-scope macro. Within the dynamic extent of that macro one can register a resource with the scoped! function so that when the macrco block goes out of scope .close is called on the registered resource. An object and function can also be registered with (scoped! x (fn [x] ...)) so that when the macro block goes out of scope the function will be called and given x as an argument. There is also a shorthand function called scoped-thunk! that will register a thunk (a function taking no arguments) to be called when the macro block goes out of scope. The scopes library also defines a function named closeable? that will return true if its argument implements java.lang.AutoCloseable. Because scopes uses the java.lang.AutoCloseable interface and the exception supression mechanism, it is only compatible with Java 7. Finally, there is also a scopes-magic artifact, and when it is on the classpath it will automatically pull in the scopes library and add with-resource-scope, scoped!, scoped-thunk!, and closeable? to clojure.core so that they are automatically available everywhere with out having to be imported. I'm not saying that this is necessarily a good idea, but there it is. :) https://clojars.org/pjstadig/**scopeshttps://clojars.org/pjstadig/scopes https://clojars.org/pjstadig/**scopes-magichttps://clojars.org/pjstadig/scopes-magic Paul -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@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+u...@googlegroups.com For more options, visit this group at http://groups.google.com/**group/clojure?hl=enhttp://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/**groups/opt_outhttps://groups.google.com/groups/opt_out . -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: [ClojureScript] Re: evaluating compiled clojurescript functions at the REPL
Benjamin, I modified a Pedestal based project to use a REPL and through that REPL you can inspect the app running live in the browser. The project is here https://github.com/humanitiesNerd/tinkering-with-the-repl And the youtube footage is here http://www.youtube.com/watch?v=3AYKXRby5oE It's not snappy, Iḿ sorry. It's the first screencast in my life, I recorded it late at night and I had missed the microphone level toggle so the audio is a bit... well... inadequate. But if you can set your volume high enough you could still find it useful. A pat on my shoulder could be of help in convincing me to re-record it in a better way. Tchüss ! 2013/10/13 Benjamin Vulpes ben...@gmail.com That would be useful data, eh? http://stackoverflow.com/questions/19342066/evaluating-compiled-clojurescript-functions-at-the-repl On Sat, Oct 12, 2013 at 11:36 PM, Dave Della Costa ddellaco...@gmail.comwrote: Link? (2013/10/13 14:14), Benjamin Vulpes wrote: Hey all! I've written a S.O. question about Emacs/ClojureScript REPL integration. My basic question is: how ams call compiled functions and execute in browser context? I love working with Emacs and I also love all of the work that everyone has put into building a robust Emacs/CLJ* toolchain, and really look forward to any tips anyone has to share on getting all of the nrepl.el functionality in a browser-executing cljs repl. Thanks! --vulpes -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups ClojureScript group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescr...@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [ANN] Grenchman, for running Clojure code quickly
All I want to say is that you are still _the man_ when it comes to pushing cli clojure tooling forward, IMHO. Thanks so much! On Tue, Oct 8, 2013 at 10:49 PM, Phil Hagelberg p...@hagelb.org wrote: When we've polled Leiningen users in the past[1], the #1 pain point people always report is its startup time. While there have been a number of strategies suggested to reduce the annoyance of slow JVM startup time and project loading, keeping your JVMs around can lead to awkward workflows in some situations given the tooling we've had so far. To this end I'm happy to announce the release of Grenchman, a tool for executing Clojure code in a running process *quickly*: http://leiningen.org/grench.html With Grenchman you can launch an nREPL server in the background (typically with `lein trampoline repl :headless`, but you can also embed an nREPL server in a production setting) and then connect to it directly From the command-line with minimal overhead: $ time grench eval '(println Hello, world!)' Hello, world! real0m0.117s user0m0.024s sys 0m0.024s This opens up a number of new command-line-centric workflows. You can also invoke Leiningen tasks from Grenchman if you launch a separate out-of-project `lein repl :headless` server: $ time grench lein version Leiningen 2.3.3 on Java 1.6.0_27 OpenJDK 64-Bit Server VM real0m0.118s user0m0.032s sys 0m0.020s Finally, Grenchman includes its own interactive nREPL client using GNU Readline: $ grench repl user= (System/getProperty user.dir) /home/phil/src/syme [...] Plans for the next version[3] include completion in the repl client and support for repl history and multi-line form input. While it is a very young project, the non-interactive functionality is quite stable. Please give Grenchman a try if this sounds interesting to you. The install process is the same as Leiningen where you download and chmod an executable, except that there is a different executable for different platforms; I have precompiled binaries for several common platforms at the link above and will post user-contributed builds for other platforms I don't have access to if there is demand. thanks, Phil [1] - https://lein-survey-2013.herokuapp.com/results and https://lein-survey-2012.herokuapp.com/results [2] - https://github.com/technomancy/leiningen/wiki/Faster [3] - https://github.com/technomancy/grenchman/issues?milestone=2state=open [4] - Grenchman was inspired to a degree by Jark (http://icylisper.github.io/jark/) but does not share any code with it. [5] - Timings above are taken from my 4½-year-old laptop; newer hardware would perform better. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hi Tim. I think you've most likely identified the issue. Would you be able to give that a go and see if it is working? You can clone the lein midje doc repo, change the versions and run lein install. Please let me know how it goes. Chris On 13/10/2013, at 21:31, Timothy Washington twash...@gmail.com wrote: Hi Chris, A) My dev environment is in a VMWare guest Ubuntu Linux Server 12.04.3 (on an OSX Host). B) My project's clojure version is 1.5.1. And C), I have the latest version of pygments installed via apt-get. But I don't think those are the causes. That top-level error with the seq/map-nth function is in the useful lib, used by conch, used by lein-mdije-doc. I presume that the version of useful doesn't have that particular function. Now, when using the lein-midje-doc plugin, the versions of useful that get pulled down, are 0.8.3-alpha8 and 0.8.5-alpha2. However, the latest version on Clojars is 0.8.8. Maybe using the latest version of conch will help. Your tool seems to use 0.5.0. But the latest version is 0.5.2. Tim Washington Interruptsoftware.ca / Bkeeping.com On Sun, Oct 13, 2013 at 6:01 AM, zcaudate z...@caudate.me wrote: Also.. What version of clojure are you using? I'll try with that and see if I can reproduce the error. -- -- -- -- 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 a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/hiX7QrTec3A/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
In a locally cloned lein-midje-doc project, I set the conch lib to the latest version, *[me.raynes/conch 0.5.2]*. But the same error is happening for me. You'll probably have to dig into the dependency chain, and see where the broken link is. Tim Washington Interruptsoftware.ca / Bkeeping.com On Sun, Oct 13, 2013 at 5:03 PM, Chris Zheng z...@caudate.me wrote: Hi Tim. I think you've most likely identified the issue. Would you be able to give that a go and see if it is working? You can clone the lein midje doc repo, change the versions and run lein install. Please let me know how it goes. Chris On 13/10/2013, at 21:31, Timothy Washington twash...@gmail.com wrote: Hi Chris, *A)* My dev environment is in a VMWare guest Ubuntu Linux Server 12.04.3 (on an OSX Host). *B)* My project's clojure version is 1.5.1. And *C)*, I have the latest version of pygments installed via apt-get. But I don't think those are the causes. That top-level error with the *seq/map-nth* function is in the *usefulhttps://clojars.org/useful * lib, used by *conch https://clojars.org/me.raynes/conch*, used by * lein-mdije-doc https://clojars.org/lein-midje-doc*. I presume that the version of useful doesn't have that particular function. Now, when using the lein-midje-doc plugin, the versions of *useful* that get pulled down, are *0.8.3-alpha8* and *0.8.5-alpha2*. However, the latest version on Clojars is *0.8.8*. Maybe using the latest version of *conch* will help. Your tool seems to use *0.5.0*. But the latest version is *0.5.2*. Tim Washington Interruptsoftware.ca / Bkeeping.com On Sun, Oct 13, 2013 at 6:01 AM, zcaudate z...@caudate.me wrote: Also.. What version of clojure are you using? I'll try with that and see if I can reproduce the error. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hi Tim, Its really difficult for me to figure out what is happening because I can't reproduce the error. The only solution I can think of is to put in the newest useful library: In project.clj: 1. add dependency [org.flatland/useful 0.10.4] 2. change project version: [lein-midje-doc 0.0.13a] 3. run lein install 4. change your profile to use 0.0.13a and see what happens. If that doesn't work… I'm actually out of ideas and all I can do is log an issue with raynes. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hmm, Did all those things (except the latest useful version is *[useful 0.8.8]https://clojars.org/useful *), and still getting the same *seq/map-nth* error. Dunno. Best thing I can think of is to *i)* try a clean install of the relevant lein tools in your syste, or *ii)* log an issue with Raynes. Maybe other people have come across this. Hth Tim Washington Interruptsoftware.ca / Bkeeping.com 416.843.9060 On Sun, Oct 13, 2013 at 6:05 PM, Chris Zheng z...@caudate.me wrote: Hi Tim, Its really difficult for me to figure out what is happening because I can't reproduce the error. The only solution I can think of is to put in the newest useful library: In project.clj: 1. add dependency [org.flatland/useful 0.10.4] 2. change project version: [lein-midje-doc 0.0.13a] 3. run lein install 4. change your profile to use 0.0.13a and see what happens. If that doesn't work… I'm actually out of ideas and all I can do is log an issue with raynes. -- -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
making a lot of small calcs parallel
I'm walking a seq of many millions of floats, encoding them for the persistence layer, and getting sequence ids from the db. So, conceptually there are two parts: the slow part, and the side-effecting part. Vaguely like (map get-ids (map encode float-seq)) which is later reduced while writing to disk. In the get-ids step the order matters. My first attempt to make the slow part parallel was to use pmap, (map get-ids (pmap encode float-seq)) However that's actually slower. I expect this is because even though encode is the bottleneck, it's still faster than the overhead of pmap. I next tried pmap over groups of floats, a bit like (map get-ids (flatten (pmap #(map encode %) (partition-all 2 float-seq (sorry for any typos, I'm just pseudo-coding here) This was still slower, which surprised me. I understand the first pmap result, but this one is puzzling to me. Even if I partition half the length of the seq (so in theory it can run two threads, each of which will run five or six seconds), it's no faster than map. Part of this seems to be the overhead of creating more intermediate seqs. Perhaps I'm misunderstanding what's happening during partition-all. Is there some obvious way to approach this scenario? I looked briefly at the reducers library, however it was unclear to me how to deal with the side-effecting portion of the operation. The second (fast) map operation needs to be done in order. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hey Tim, Try using [org.flatland/useful 0.10.4] instead. I think they're starting to use the namespaced versions. On 14/10/2013, at 9:54 AM, Timothy Washington twash...@gmail.com wrote: Hmm, Did all those things (except the latest useful version is [useful 0.8.8]), and still getting the same seq/map-nth error. Dunno. Best thing I can think of is to i) try a clean install of the relevant lein tools in your syste, or ii) log an issue with Raynes. Maybe other people have come across this. Hth Tim Washington Interruptsoftware.ca / Bkeeping.com 416.843.9060 On Sun, Oct 13, 2013 at 6:05 PM, Chris Zheng z...@caudate.me wrote: Hi Tim, Its really difficult for me to figure out what is happening because I can't reproduce the error. The only solution I can think of is to put in the newest useful library: In project.clj: 1. add dependency [org.flatland/useful 0.10.4] 2. change project version: [lein-midje-doc 0.0.13a] 3. run lein install 4. change your profile to use 0.0.13a and see what happens. If that doesn't work… I'm actually out of ideas and all I can do is log an issue with raynes. -- -- -- 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 a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/hiX7QrTec3A/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Same error. I dunno. I'll take deeper dig later on. Thanks Tim Washington Interruptsoftware.ca / Bkeeping.com On Sun, Oct 13, 2013 at 7:55 PM, Chris Zheng z...@caudate.me wrote: Hey Tim, Try using [org.flatland/useful 0.10.4] instead. I think they're starting to use the namespaced versions. On 14/10/2013, at 9:54 AM, Timothy Washington twash...@gmail.com wrote: Hmm, Did all those things (except the latest useful version is *[useful 0.8.8] https://clojars.org/useful*), and still getting the same * seq/map-nth* error. Dunno. Best thing I can think of is to *i)* try a clean install of the relevant lein tools in your syste, or *ii)* log an issue with Raynes. Maybe other people have come across this. Hth Tim Washington Interruptsoftware.ca http://interruptsoftware.ca/ / Bkeeping.comhttp://bkeeping.com/ 416.843.9060 On Sun, Oct 13, 2013 at 6:05 PM, Chris Zheng z...@caudate.me wrote: Hi Tim, Its really difficult for me to figure out what is happening because I can't reproduce the error. The only solution I can think of is to put in the newest useful library: In project.clj: 1. add dependency [org.flatland/useful 0.10.4] 2. change project version: [lein-midje-doc 0.0.13a] 3. run lein install 4. change your profile to use 0.0.13a and see what happens. If that doesn't work… I'm actually out of ideas and all I can do is log an issue with raynes. -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Reflecting on Arity
Is there a handy way to discover the valid arities for an arbitrary Clojure function? -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Reflecting on Arity
Currently IFn itself doesn't provide a way for you to do this. Options: a) example the source / docs b) Call the IFn and see which arities throw an ArityException c) If the IFn is in a var you can get arities from the :arglists metadata c) is probably your best bet if you know you have a var, e.g. (meta #'+) = {:arglists ([] [x] [x y] [x y more]), :ns #Namespace clojure.core, :name +, :column 1, :added 1.2, :inline-arities #core$_GT_1_QMARK_ clojure.core$_GT_1_QMARK_@564b8be6, :doc Returns the sum of nums. (+) returns 0. Does not auto-promote\n longs, will throw on overflow. See also: +', :line 936, :file clojure/core.clj, :inline #core$nary_inline$fn__3961 clojure.core$nary_inline$fn__3961@abb88b8} On Monday, 14 October 2013 11:40:23 UTC+8, puzzler wrote: Is there a handy way to discover the valid arities for an arbitrary Clojure function? -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Reflecting on Arity
c is the best bet, but still I wouldn't rely on it for anything. On Sun, Oct 13, 2013 at 9:23 PM, Mikera mike.r.anderson...@gmail.comwrote: Currently IFn itself doesn't provide a way for you to do this. Options: a) example the source / docs b) Call the IFn and see which arities throw an ArityException c) If the IFn is in a var you can get arities from the :arglists metadata c) is probably your best bet if you know you have a var, e.g. (meta #'+) = {:arglists ([] [x] [x y] [x y more]), :ns #Namespace clojure.core, :name +, :column 1, :added 1.2, :inline-arities #core$_GT_1_QMARK_ clojure.core$_GT_1_QMARK_@564b8be6, :doc Returns the sum of nums. (+) returns 0. Does not auto-promote\n longs, will throw on overflow. See also: +', :line 936, :file clojure/core.clj, :inline #core$nary_inline$fn__3961 clojure.core$nary_inline$fn__3961@abb88b8} On Monday, 14 October 2013 11:40:23 UTC+8, puzzler wrote: Is there a handy way to discover the valid arities for an arbitrary Clojure function? -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.