Re: [ANN] expresso 0.1.0 released
Hi David, The core of expresso wouldn't be much work to port to clojurescript. The rule based translator is built on top of core.logic, so porting that should be straightforward. Also the manipulation routines are very much purely algorithmic so should work without much trouble in clojurescript. There are two things which need to be resolved, though: 1.) what execution engine: expresso is very close to core.matrix and uses its functions to execute the expressions and it's function names and semantics for the encoded expressions. 2.) compiling optimized expressions to functions at runtime: In clojure I managed to compile optimized expressions to optimized code at runtime through a code-emitting protocol and a call to eval to create the function. Without eval in clojurescript this couldn't be done easily. With compile-time constant expressions this could be made to work with a macro. At runtime there would still be the normal evaluate function which however traverses the whole expression tree. So if anyone knows a good execution engine for expresso in clojurescript or has thoughts about the compiling issue please post! I think it would be a good showcase for clojurescript to bring symbolic manipulation cababilities including solving equations etc to the browser. On Thu, Aug 29, 2013 at 10:19 PM, David Nolen dnolen.li...@gmail.com wrote: Very cool stuff :) How much work would it take for this to work with ClojureScript? David On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann maikschuenem...@gmail.com wrote: Hi, I released a first version of my gsoc project expresso [1]. This is an important Milestone in my gsoc project. What is there: an expressive and powerful rule based translator, on top of which many transformations can be based. functions to simplify (currently without ratio test), differentiate, rearrange, solve expressions. functions to optimize an expression (includes common-sub-expression-elimination, constant-folding, replacement with special operators, matrix-chain-optimization, ...) The solver can solve multiple simultaneous equations. currently it solves equations, which are polynomials up to degree 2, in which the number of occurrences of the unknown can be reduced to one by simplifying the expression or which consists of factors in above form. variables as parameters are supported everywhere. The last weeks of gsoc I will be making the above transformations more stable, eliminate as many bugs as I can find (feel free to report some you notice), and extending the range of expressions which can be transformed by these transformations, as well as thoroughly documenting the work that has been done. See the github repository and README.md for details [1] [1] https://github.com/clojure-numerics/expresso -- -- 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. -- -- 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: Keyword Breaking Change Around the Corner
For #2, we can't intern the keywords like Clojure does on the JVM because JavaScript does not provide weak references. If we interned dynamically created keywords, then we'd have an exploitable memory leak. This may actually be a non-issue for Browser Environments since you would not exploit your users and your users would only be able to exploit their own browsers unless you somehow allow them to send arbitrary data to each other (which you should never do anyways). So interning might still be an option for browser targetted JS, even without weak references (IMHO). Just my 2 cents, /thomas -- -- 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] expresso 0.1.0 released
2.) compiling optimized expressions to functions at runtime: In clojure I managed to compile optimized expressions to optimized code at runtime through a code-emitting protocol and a call to eval to create the function. Without eval in clojurescript this couldn't be done easily. With compile-time constant expressions this could be made to work with a macro. At runtime there would still be the normal evaluate function which however traverses the whole expression tree. So if anyone knows a good execution engine for expresso in clojurescript or has thoughts about the compiling issue please post! Not sure if it suits your needs, but I've been working on a simple S-expression evaluation library that works in Clojure and ClojureScript: https://github.com/kumarshantanu/quiddity I am implementing namespace support for the upcoming 0.3.x release (in few weeks) and also migrating from lein-cljsbuild's crossovers to use cljx. Shantanu -- -- 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] expresso 0.1.0 released
Hi, Not sure if it suits your needs, but I've been working on a simple S-expression evaluation library that works in Clojure and ClojureScript: https://github.com/kumarshantanu/quiddity quiddity looks interesting. From what I read at the github page, creating functions (which is the requirement for me) is listed as a limitation and implemented using an evaluator. How is it done? Does the created function incur overhead when excecuting (maybe by walking the expression)? Or is there only one time an overhead and afterwards runs like a normal 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: [ANN] expresso 0.1.0 released
Hi Maik, On Friday, 30 August 2013 15:04:03 UTC+5:30, Maik Schünemann wrote: Hi, Not sure if it suits your needs, but I've been working on a simple S-expression evaluation library that works in Clojure and ClojureScript: https://github.com/kumarshantanu/quiddity quiddity looks interesting. From what I read at the github page, creating functions (which is the requirement for me) is listed as a limitation and implemented using an evaluator. How is it done? Does the created function incur overhead when excecuting (maybe by walking the expression)? Or is there only one time an overhead and afterwards runs like a normal function? At runtime, evaluation behaves like an interpreter looking up the expression symbols into the user-specified environment (collection of maps) to find their values, so the performance takes a hit there. The overhead is directly proportional to the depth of the expression and number of symbols used. If you can precompile the dependency functions (using code generation or macros) and use them in the environment instead of passing a large expression to evaluate, that should minimize the performance overhead. I will be happy to answer any specific questions or go into detail, please feel free to ask. The fn expression (via the evaluator) doesn't support meta-info, pre-conditions etc now but the essential functionality should work. Shantanu -- -- 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: Selecting subsets of maps
@ Baishampayan @ Christophe Accidentally crossed over this post, turned out I've had exactly same need (about a year after you though), and decided to write a little library, Balagan: https://github.com/clojurewerkz/balagan Basically, you can run predicate-based queries on your data and apply transformations. Check it out, maybe it helps On Tuesday, May 29, 2012 2:23:30 PM UTC+2, Baishampayan Ghose wrote: Great feedback, Christophe. I will get back to you with a better implementation. Regards, BG On Tue, May 29, 2012 at 5:44 PM, Christophe Grand chris...@cgrand.netjavascript: wrote: The expansion idea is interesting: expand your selectors to a seq of paths, redcue with get-in/assoc-in over thme to get the extract sense, reduce with update-in+dissoc to get the exclude. Could yield a nice implementation. And now for some nitpicking: * nowadays I'm reluctant to extend a protocol to interfaces * apply where reduce should be used (L15) * what's the puprose of (juxt key val)? (L20) Christophe On Tue, May 29, 2012 at 12:37 PM, Baishampayan Ghose b.g...@gmail.comjavascript: wrote: Christophe, Laurent dragged me in the conversation so here is my take https://gist.github.com/2823916 which strictly follows your proposed syntax. I am glad that Laurent dragged you in, I got to see your beautiful solution :-) Here is my (less beautiful) solution, `extract` along with its counterpart `exclude` which does the opposite - https://www.refheap.com/paste/2911 Comments welcome. Regards, BG -- Baishampayan Ghose b.ghose at gmail.com -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- Professional: http://cgrand.net/ (fr) On Clojure: http://clj-me.cgrand.net/ (en) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- Baishampayan Ghose b.ghose at gmail.com -- -- 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] expresso 0.1.0 released
While the runtime optimizations are cool, I think ClojureScript could benefit from just having compile time optimized expressions. Mostly thinking about the applicability for certain interactive applications and games. On Fri, Aug 30, 2013 at 3:45 AM, Maik Schünemann maikschuenem...@gmail.comwrote: Hi David, The core of expresso wouldn't be much work to port to clojurescript. The rule based translator is built on top of core.logic, so porting that should be straightforward. Also the manipulation routines are very much purely algorithmic so should work without much trouble in clojurescript. There are two things which need to be resolved, though: 1.) what execution engine: expresso is very close to core.matrix and uses its functions to execute the expressions and it's function names and semantics for the encoded expressions. 2.) compiling optimized expressions to functions at runtime: In clojure I managed to compile optimized expressions to optimized code at runtime through a code-emitting protocol and a call to eval to create the function. Without eval in clojurescript this couldn't be done easily. With compile-time constant expressions this could be made to work with a macro. At runtime there would still be the normal evaluate function which however traverses the whole expression tree. So if anyone knows a good execution engine for expresso in clojurescript or has thoughts about the compiling issue please post! I think it would be a good showcase for clojurescript to bring symbolic manipulation cababilities including solving equations etc to the browser. On Thu, Aug 29, 2013 at 10:19 PM, David Nolen dnolen.li...@gmail.com wrote: Very cool stuff :) How much work would it take for this to work with ClojureScript? David On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann maikschuenem...@gmail.com wrote: Hi, I released a first version of my gsoc project expresso [1]. This is an important Milestone in my gsoc project. What is there: an expressive and powerful rule based translator, on top of which many transformations can be based. functions to simplify (currently without ratio test), differentiate, rearrange, solve expressions. functions to optimize an expression (includes common-sub-expression-elimination, constant-folding, replacement with special operators, matrix-chain-optimization, ...) The solver can solve multiple simultaneous equations. currently it solves equations, which are polynomials up to degree 2, in which the number of occurrences of the unknown can be reduced to one by simplifying the expression or which consists of factors in above form. variables as parameters are supported everywhere. The last weeks of gsoc I will be making the above transformations more stable, eliminate as many bugs as I can find (feel free to report some you notice), and extending the range of expressions which can be transformed by these transformations, as well as thoroughly documenting the work that has been done. See the github repository and README.md for details [1] [1] https://github.com/clojure-numerics/expresso -- -- 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. -- -- 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
Re: [ANN] expresso 0.1.0 released
I also think having expresso in clojurescript would be a cool think and I am willing to make a port after the gsoc period. Do you know any good js or clojurescript (matrix) mathematical library which clojurescript expresso could use ? (loud thinking) maybe clojurescript would also benefit of having a version of core.matrix On Fri, Aug 30, 2013 at 3:55 PM, David Nolen dnolen.li...@gmail.com wrote: While the runtime optimizations are cool, I think ClojureScript could benefit from just having compile time optimized expressions. Mostly thinking about the applicability for certain interactive applications and games. On Fri, Aug 30, 2013 at 3:45 AM, Maik Schünemann maikschuenem...@gmail.com wrote: Hi David, The core of expresso wouldn't be much work to port to clojurescript. The rule based translator is built on top of core.logic, so porting that should be straightforward. Also the manipulation routines are very much purely algorithmic so should work without much trouble in clojurescript. There are two things which need to be resolved, though: 1.) what execution engine: expresso is very close to core.matrix and uses its functions to execute the expressions and it's function names and semantics for the encoded expressions. 2.) compiling optimized expressions to functions at runtime: In clojure I managed to compile optimized expressions to optimized code at runtime through a code-emitting protocol and a call to eval to create the function. Without eval in clojurescript this couldn't be done easily. With compile-time constant expressions this could be made to work with a macro. At runtime there would still be the normal evaluate function which however traverses the whole expression tree. So if anyone knows a good execution engine for expresso in clojurescript or has thoughts about the compiling issue please post! I think it would be a good showcase for clojurescript to bring symbolic manipulation cababilities including solving equations etc to the browser. On Thu, Aug 29, 2013 at 10:19 PM, David Nolen dnolen.li...@gmail.com wrote: Very cool stuff :) How much work would it take for this to work with ClojureScript? David On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann maikschuenem...@gmail.com wrote: Hi, I released a first version of my gsoc project expresso [1]. This is an important Milestone in my gsoc project. What is there: an expressive and powerful rule based translator, on top of which many transformations can be based. functions to simplify (currently without ratio test), differentiate, rearrange, solve expressions. functions to optimize an expression (includes common-sub-expression-elimination, constant-folding, replacement with special operators, matrix-chain-optimization, ...) The solver can solve multiple simultaneous equations. currently it solves equations, which are polynomials up to degree 2, in which the number of occurrences of the unknown can be reduced to one by simplifying the expression or which consists of factors in above form. variables as parameters are supported everywhere. The last weeks of gsoc I will be making the above transformations more stable, eliminate as many bugs as I can find (feel free to report some you notice), and extending the range of expressions which can be transformed by these transformations, as well as thoroughly documenting the work that has been done. See the github repository and README.md for details [1] [1] https://github.com/clojure-numerics/expresso -- -- 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
Re: [ANN] expresso 0.1.0 released
On Fri, Aug 30, 2013 at 11:00 AM, Maik Schünemann maikschuenem...@gmail.com wrote: I also think having expresso in clojurescript would be a cool think and I am willing to make a port after the gsoc period. Cool. Do you know any good js or clojurescript (matrix) mathematical library which clojurescript expresso could use ? (loud thinking) maybe clojurescript would also benefit of having a version of core.matrix Yes it would. 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 --- 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.
ANN: data.json 0.2.3
*data.json*: pure-Clojure JSON parser/writer Info and docs: https://github.com/clojure/data.json New release version: *0.2.3* In Leiningen: [org.clojure/data.json 0.2.3] Changes in this release: * Enhancement DJSON-9 http://dev.clojure.org/jira/browse/DJSON-9: option to escape U+2028 and U+2029 * Fix DJSON-11 http://dev.clojure.org/jira/browse/DJSON-11: printing unnecessary commas with value-fn This is a Clojure Contrib library: http://dev.clojure.org/display/doc/Clojure+Contrib+Libraries -- -- 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.
[ANN] Blackwater 0.0.5 released (SQL query logging)
https://github.com/bitemyapp/blackwater/ Clojure library for logging SQL queries and the time they took for Korma and clojure.java.jdbc. I like having a 'canary in the coal mine' while developing locally so that I can see the queries getting executed and the time they took to run, similar to Rails query logging. The library stands alone although this imports specific (recent) versions of c.j.j and Korma, exclude and replace as you need to. Some users to help me shake this out beyond how I use it (I'm primarily a Korma guy) would be very useful, Github Issues and PRs very welcome! Thanks everybody. I've got another library to announce once a friend helps me do some testing with it. --- Chris -- -- 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.
Java Metadata Wrapper
I've noticed that, when doing a lot of Java interop, it's impossible to attach metadata to most Java objects, since they don't implement the IMeta interface. A workaround for this would be to do something like put every Java object in a single-element list and attach metadata to the list, but this is annoying. Would it be possible (or even useful) to create some kind of generic IMeta structure that can wrap other Java objects and have them act like normal, except for the added metadata (or even other Clojure-esque features)? -- -- 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] core.typed 0.2.0 - Production Ready
Sorry for a late reply to the thread. This release is pretty cool. I haven't been following the development too closely, so I have two questions: 1. Is ClojureScript/ClojureCLR supported by core.typed? Or, is it planned? 2. Is there a Leiningen plugin that can help run the type checks from the command line? Shantanu On Thursday, 29 August 2013 22:10:18 UTC+5:30, Ambrose Bonnaire-Sergeant wrote: Just pushed 0.2.1 based on feedback from the video on HN. https://github.com/clojure/core.typed/blob/master/CHANGELOG.md Thanks, Ambrose On Thu, Aug 29, 2013 at 6:28 AM, Ambrose Bonnaire-Sergeant abonnair...@gmail.com javascript: wrote: Hi, After 10 months and 26 0.1.x releases of transitioning core.typed from an ambitious student project, I am finally comfortable recommending core.typed for production use. Production Ready My interpretation of production ready in this context is: - core.typed can *find bugs* in real code - core.typed will *not slow down* your existing code by loading a large library at production. (core.typed does introduce an extra identity-like function call at type annotations, I assume this is a candidate for optimisation via HotSpot) - A basic *tutorial*, API docs and example project exist - core.typed is *currently used in production* with success (at CircleCI for several months) - The core type checking API is mostly *stable*, with only very minor removals/breaking changes in the last few months. There are several outstanding issues, but I am satisfied that core.typed can bring real utility to real programs *today* and with *no production-time drawbacks*, thus this release. How to get started Leiningen dep: [org.clojure/core.typed 0.2.0] ...; for very recent releases:repositories {sonatype-oss-public https://oss.sonatype.org/content/groups/public/} If you like following tutorials try the user/types guide. If you just want to get your hands on some typed code, see the Example project. core.typed User Guidehttps://github.com/clojure/core.typed/wiki/User-Guide core.typed Types Guide https://github.com/clojure/core.typed/wiki/Types Example project https://github.com/frenchy64/core.typed-example API Reference http://clojure.github.io/core.typed/ core.typed Github Home https://github.com/clojure/core.typed core.typed Wiki https://github.com/clojure/core.typed/wiki Please report bugs, ask questions or discuss things on the mailing listhttps://groups.google.com/forum/?fromgroups#!forum/clojure-core-typed . (FWIW I'm ambrosebs on #clojure.) Thanks, Ambrose -- -- 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: Java Metadata Wrapper
On Fri, Aug 30, 2013 at 2:16 PM, JvJ kfjwhee...@gmail.com wrote: Would it be possible (or even useful) to create some kind of generic IMeta structure that can wrap other Java objects and have them act like normal, except for the added metadata (or even other Clojure-esque features)? Are you interested in :tag metadata or something else? Just curious what the use-case is. -- -- 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.
ANN Introducing EEP, a young [event] stream processing library
On behalf of the ClojureWerkz team [1], I'm happy to announce our new project, EEP (for Embedded Event Processing). Read the announcement: http://blog.clojurewerkz.org/blog/2013/08/29/stream-processing-with-eep/ The library is young and definitely could use better documentation but it's mature enough to start gathering feedback from the rest of the community. Please give it a try. There will be a couple more exiciting announcements from ClojureWerkz in the next few weeks. So watch this space. I'd like to thank Alex (http://twitter.com/ifesdjeen) and his dog Huskell (https://twitter.com/huskelldog) for driving this project. 1. http://clojurewerkz.org -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- 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: clj-tuple, efficient small collections
I've updated the library so tuples behave like vectors, rather than lists. The macros have gotten kind of elephantine, but since I've already added every conceivable Clojure interface at least they won't get any bigger. If there are any lingering gaps, though, please let me know. Zach On Saturday, August 24, 2013 7:38:25 PM UTC-7, Zach Tellman wrote: I just pulled some code I wrote while trying to optimize 'memoize' into its own library: https://github.com/ztellman/clj-tuple. It only has the one function, so I assume no one will need too much explanation. However, there may still be room for performance improvements, so if anyone wants to take a stab, pull requests are welcome. Zach -- -- 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] core.typed 0.2.0 - Production Ready
Hi Shantanu, CLJS support is planned but not current plans to work on CLR myself. No leiningen plugins yet, FWIW I tend to add type checks to my unit tests like: (is (check-ns 'my.ns)) Thanks, Ambrose On Sat, Aug 31, 2013 at 4:13 AM, Shantanu Kumar kumar.shant...@gmail.comwrote: Sorry for a late reply to the thread. This release is pretty cool. I haven't been following the development too closely, so I have two questions: 1. Is ClojureScript/ClojureCLR supported by core.typed? Or, is it planned? 2. Is there a Leiningen plugin that can help run the type checks from the command line? Shantanu On Thursday, 29 August 2013 22:10:18 UTC+5:30, Ambrose Bonnaire-Sergeant wrote: Just pushed 0.2.1 based on feedback from the video on HN. https://github.com/clojure/**core.typed/blob/master/**CHANGELOG.mdhttps://github.com/clojure/core.typed/blob/master/CHANGELOG.md Thanks, Ambrose On Thu, Aug 29, 2013 at 6:28 AM, Ambrose Bonnaire-Sergeant abonnair...@gmail.com wrote: Hi, After 10 months and 26 0.1.x releases of transitioning core.typed from an ambitious student project, I am finally comfortable recommending core.typed for production use. Production Ready My interpretation of production ready in this context is: - core.typed can *find bugs* in real code - core.typed will *not slow down* your existing code by loading a large library at production. (core.typed does introduce an extra identity-like function call at type annotations, I assume this is a candidate for optimisation via HotSpot) - A basic *tutorial*, API docs and example project exist - core.typed is *currently used in production* with success (at CircleCI for several months) - The core type checking API is mostly *stable*, with only very minor removals/breaking changes in the last few months. There are several outstanding issues, but I am satisfied that core.typed can bring real utility to real programs *today* and with *no production-time drawbacks*, thus this release. How to get started Leiningen dep: [org.clojure/core.typed 0.2.0] ...; for very recent releases:repositories {sonatype-oss-public https://oss.sonatype.org/**content/groups/public/ https://oss.sonatype.org/content/groups/public/} If you like following tutorials try the user/types guide. If you just want to get your hands on some typed code, see the Example project. core.typed User Guidehttps://github.com/clojure/core.typed/wiki/User-Guide core.typed Types Guidehttps://github.com/clojure/core.typed/wiki/Types Example project https://github.com/frenchy64/core.typed-example API Reference http://clojure.github.io/core.typed/ core.typed Github Home https://github.com/clojure/core.typed core.typed Wiki https://github.com/clojure/core.typed/wiki Please report bugs, ask questions or discuss things on the mailing listhttps://groups.google.com/forum/?fromgroups#!forum/clojure-core-typed . (FWIW I'm ambrosebs on #clojure.) Thanks, Ambrose -- -- 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.
[ANN] Pedestal 0.2.0 has been released
Hey Folks, We've just released 0.2.0 versions of the Pedestal libraries. This is a big one, with revamped templates for both pedestal-app and pedestal-service applications. The biggest change is that developer tooling now lives in *-tools libraries, cleaning up generated projects and making it easier for us to incrementally improve that tooling in the future. You'll also find that pedestal-service now uses Cheshire for JSON reading/writing. All this and more is documented in the 0.2.0 Release Notes. Kudos to everyone that contributed to this release. Happy Labor Day weekend Hacking! - Ryan and the rest of the Pedestal team -- -- 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: Java Metadata Wrapper
In some cases you could proxy and add IMeta that way. On Friday, August 30, 2013 2:16:26 PM UTC-5, JvJ wrote: I've noticed that, when doing a lot of Java interop, it's impossible to attach metadata to most Java objects, since they don't implement the IMeta interface. A workaround for this would be to do something like put every Java object in a single-element list and attach metadata to the list, but this is annoying. Would it be possible (or even useful) to create some kind of generic IMeta structure that can wrap other Java objects and have them act like normal, except for the added metadata (or even other Clojure-esque features)? -- -- 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 Introducing EEP, a young [event] stream processing library
Looks very interesting, thanks for sharing! Could you summarise how this fits in the ecosystem relative to Storm, Aleph etc? When should EEP be the most appropriate choice? On Saturday, 31 August 2013 05:02:27 UTC+8, Michael Klishin wrote: On behalf of the ClojureWerkz team [1], I'm happy to announce our new project, EEP (for Embedded Event Processing). Read the announcement: http://blog.clojurewerkz.org/blog/2013/08/29/stream-processing-with-eep/ The library is young and definitely could use better documentation but it's mature enough to start gathering feedback from the rest of the community. Please give it a try. There will be a couple more exiciting announcements from ClojureWerkz in the next few weeks. So watch this space. I'd like to thank Alex (http://twitter.com/ifesdjeen) and his dog Huskell (https://twitter.com/huskelldog) for driving this project. 1. http://clojurewerkz.org -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- 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: Java Metadata Wrapper
It would be better, I think, if metadata was attachable via a protocol rather than than a wrapper: then you could just extend the protocol to any arbitrary Java class. Wrappers are a pain to make work because of wrapping / unwrapping and protocols also have the advantage of being very efficient. I've wanted a similar feature with respect to seq as well (a protocol for things that can be treated as sequences) On Saturday, 31 August 2013 03:16:26 UTC+8, JvJ wrote: I've noticed that, when doing a lot of Java interop, it's impossible to attach metadata to most Java objects, since they don't implement the IMeta interface. A workaround for this would be to do something like put every Java object in a single-element list and attach metadata to the list, but this is annoying. Would it be possible (or even useful) to create some kind of generic IMeta structure that can wrap other Java objects and have them act like normal, except for the added metadata (or even other Clojure-esque features)? -- -- 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: Java Metadata Wrapper
I've also been interested in this for Named (a protocol for things I can call name on), although my use-case is mostly interop with Java frameworks. On 31 August 2013 15:13, Mikera mike.r.anderson...@gmail.com wrote: It would be better, I think, if metadata was attachable via a protocol rather than than a wrapper: then you could just extend the protocol to any arbitrary Java class. Wrappers are a pain to make work because of wrapping / unwrapping and protocols also have the advantage of being very efficient. I've wanted a similar feature with respect to seq as well (a protocol for things that can be treated as sequences) On Saturday, 31 August 2013 03:16:26 UTC+8, JvJ wrote: I've noticed that, when doing a lot of Java interop, it's impossible to attach metadata to most Java objects, since they don't implement the IMeta interface. A workaround for this would be to do something like put every Java object in a single-element list and attach metadata to the list, but this is annoying. Would it be possible (or even useful) to create some kind of generic IMeta structure that can wrap other Java objects and have them act like normal, except for the added metadata (or even other Clojure-esque features)? -- -- 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: Detecting login and logout using friend
I had to do this again in another project so I tried Chas' suggestion. It is much simpler than my earlier solution. For anyone else doing this in the future, here's how you can write it: (defn check-workflow-result check if the response contains and auth-map. If so, notify the event bus [request response] (when (friend/auth? response) (event-bus/fire :session-start {:user-agent (get-in request [:headers user-agent]) :ip-address (:remote-addr request) }))) (defn wrap [f] (fn [request] (let [response (f request)] (check-workflow-result request response) response))) (def friend-interceptor (friend-authenticate-interceptor {:allow-anon? true :unauthorized-handler (fn [request] (ring-resp/redirect /thanks)) :workflows [(wrap (oauth2/workflow {:credential-fn get-friend-creds :login-uri /login :client-config (authentication/get-oauth-config) :uri-config authentication/uri-config-sfdc }))]})) -- -- 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.