Re: auxiliary methods like :before and :after for multimethods?
Can you elaborate more about how the system should behave? Also, I don't think it's correct to say that you own the target function here, since hook applies to the whole defmulti, not to some concrete defmethod, so I don't see any difference between hooks for functions and multimethods in this case. суббота, 28 июля 2012 г., 9:37:57 UTC+6 пользователь George Oliver написал: On Friday, July 27, 2012 12:06:33 PM UTC-7, Vinzent wrote: robert-hooke actualy doesn't work with multimethods afaik. You can try my new library (https://github.com/dnaumov/hooks), but it's alpha (no docs yet, sorry). Yes, from the robert-hooke readme, Adding hooks to a defmulti is discouraged as it will make it impossible to add further methods. Hooks are meant to extend functions you don't control; if you own the target function there are obviously better ways to change its behaviour.. What got me thinking about :before and :after was the question of how to add a lightweight rules system to an application. Do you think hooks are appropriate here? -- 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: Extending protocol for maps
You can implement the clojure.lang.IPersistentMap interface if you want to create your own map type. суббота, 28 июля 2012 г., 8:09:05 UTC+6 пользователь JvJ написал: Is there a way to extend whatever protocol is used by Clojure maps (struct maps, array maps, hash maps, etc.)? -- 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: Problems extending sequences
nth is used by the clojure printer (see print-method). Try the following code: (do (ConsCell. 1 nil) :ok) It looks like you have to implement Sequential in order to get nth working on your datasctructure. суббота, 28 июля 2012 г., 10:33:48 UTC+6 пользователь JvJ написал: I'm trying to create a new ISeq type, just to try to get the hang of extending sequences. It's not working, though. As far as I can tell, I've implemented all necessary methods. However, I still get an error when attempting to create an instance of the type. When I enter the following in the REPL: (ConsCell. 1 nil) The repl complains about the nth function not being supported. However, I'm not sure how to go about implementing it. Any ideas? (deftype ConsCell [car cdr] clojure.lang.ISeq (first [this] (- this .car)) (next [this] (- this .cdr)) (more [this] (- this .cdr)) (cons [this obj] (ConsCell. obj this)) (seq [this] this) (equiv [this other] false) (count [this] (if (nil? (- this .cdr)) 1 (inc (.count cdr ;; Can't implement nth here, since it's not a member of the interface ;(nth ;[this n] ;(if (zero? n) ;(- this .car) ;(.nth cdr (dec n ) -- 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: Transitioning an App from Java to Clojure (Notes of a Talk)
There is indeed an infinite number of functions, or relationships between natural numbers. I don't think that means that that any one of those relationships is not computable because it is within the range of infinite functions. The countable parts of a program can still accept an infinite amount of input, like Turing's machine. So the best I can say is that all functions (relationships between natural numbers) can be computable, but humans may or may not have figured out a way to represent all natural numbers. Some of these functions/relations are known to be not computable. For example a function taking the source code of a program (in any Turing-complete language) and returning 1 if the program stops or 0 if it runs forever. (the halting problem http://en.wikipedia.org/wiki/Halting_problem ) This functions is mathematically perfectly well defined, but it can be proved it can not be computed. (No Turing machine can compute this function. It is important to understand it is not a complexity problem. It does not mean such a program would be too slow to be useful. It really means such a program can not exist.) -- 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: auxiliary methods like :before and :after for multimethods?
On Fri, Jul 27, 2012 at 9:06 PM, Vinzent ru.vinz...@gmail.com wrote: robert-hooke actualy doesn't work with multimethods afaik. You can try my new library (https://github.com/dnaumov/hooks), but it's alpha (no docs yet, sorry). (defmulti foo* (fn [args] ...) ...) (defmethod foo* :x [args]...) (defmethod foo* :y [args] ...) (defn foo [args] (foo* args)) Only foo calls foo*. Everyone else calls foo. Apply hooks to foo. http://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering ;-) // Ben Any suggestions about API is welcome. -- 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: Looking for help with a deadlock issue
On Fri, Jul 27, 2012 at 12:02 PM, Kyle R. Burton kyle.bur...@gmail.com wrote: I encountered a deadlock on one of our production systems (one out of 3) last night. Looking at a thread dump of the JVM, there are several (over 200) threads that are all waiting on a java.util.concurrent.locks.ReentrantLock from Keyword.intern. I've put up the thread dump and information about the os and jvm versions here: https://github.com/relaynetwork/20120727-deadlock-issue The part of our application that deadlocked is a web service that uses Compjure and Jetty. Other parts of the application did not deadlock (we have AMQP consumers that were still processing successfully). I have since restarted the service and it is processing again. I'm not sure what to look at next, can anyone suggest a next step for determining the cause? I think you're hitting a bug in Java. Specifically, this one: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6822370 It looks like there are 237 threads attempting to call java.util.concurrent.ConcurrentHashMap$Segment.put, which makes the lock awfully contentious. But the problem is that they all decided to park themselves. That's a sure sign that the view of memory is inconsistent across the processors. Looking at the evaluation of the bug, that seems to be exactly the problem. It was supposedly fixed in 1.6.0_19, but there seem to be reports that it's still present in _20 and _21. It's not all bad news though. It seems like a workaround is to use -XX:+UseMembar. -John -- 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: Clojure Sticker
You can now get official Clojure stickers here: http://clojure.org/swag I'll be adding T-shirts etc soon. Rich On Jul 19, 2012, at 3:13 PM, charlie wrote: Yeah any sort of vector image should work for us On Wed, Jul 18, 2012 at 7:59 PM, Alex Kurilin a...@kurilin.net wrote: +1. A temporary workaround would be getting a .svg that you could turn into stickers yourself, if that's ok with Rich. We did something similar with the vim logo on Reddit. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- 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: Transitioning an App from Java to Clojure (Notes of a Talk)
Very interesting. Thanks for the insight. Tim Washington Interruptsoftware.ca 416.843.9060 On Sat, Jul 28, 2012 at 6:40 AM, nicolas.o...@gmail.com nicolas.o...@gmail.com wrote: There is indeed an infinite number of functions, or relationships between natural numbers. I don't think that means that that any one of those relationships is not computable because it is within the range of infinite functions. The countable parts of a program can still accept an infinite amount of input, like Turing's machine. So the best I can say is that all functions (relationships between natural numbers) can be computable, but humans may or may not have figured out a way to represent all natural numbers. Some of these functions/relations are known to be not computable. For example a function taking the source code of a program (in any Turing-complete language) and returning 1 if the program stops or 0 if it runs forever. (the halting problem http://en.wikipedia.org/wiki/Halting_problem ) This functions is mathematically perfectly well defined, but it can be proved it can not be computed. (No Turing machine can compute this function. It is important to understand it is not a complexity problem. It does not mean such a program would be too slow to be useful. It really means such a program can not exist.) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: community interest in machine learning (?)
If you're doing anything related with neural nets I think clojure-encog is indeed the place to start... I've wrapped most of the original java encog v3 so far and I am actively using it for my own projects...I'd be very happy to hear your feedback if you decide to use it after all...The truth is I've not provided a wiki but I have provided an examples.clj where I've ported some of the most famous encog examples using my wrapper...hope you find it useful! any help you need along the way don't hesitate to ask! predicting financial series has been done in the past by heaton-research but unfortunately I've not ported that example! maybe it is time to do so as soon as I return from holidays... take care... :) Jim On Fri, Jul 27, 2012 at 10:03 PM, Timothy Washington twash...@gmail.comwrote: I'm working on a Neural Network application to tech myself machine learning and AI. - https://github.com/twashing/nn There's nothing there right now. But I'm keenly interested in the field, and getting a working project, predicting financial time series. I'm keen to check out clojure-encog https://github.com/jimpil/clojure-encog, and any other AI library. I just want to make sure I understand the mechanics of the algorithms that are being used. Very exciting Tim Washington Interruptsoftware.ca 416.843.9060 On Sun, Jul 15, 2012 at 1:10 PM, Joshua Bowles bowlesl...@gmail.comwrote: New to Clojure (but not Lisp). Does anyone have a good sense of the interest in machine learning in Clojure community? I've seen in the last few threads some interesting posts and libraries related to machine learning, and there is plenty of stuff one can get from Java (mahout, weka, clj-ml [ http://antoniogarrote.github.com/clj-ml/index.html]), but I'm curious to know if anyone here has a sense of the overall community interest. It's nice to see interesting libraries that support needed tasks for machine learning (I'm all for links to libraries), but what I'm really trying to get is* a sense of the overall interest the community has in machine learning*. For example, Python community overall has a lot of interest in scientific computing and machine learning. Compare this to Ruby... not that you couldn't provide good libraries in Ruby (for example the SciRuby project), but the Ruby community overall does not seem to have much interest in these kinds of academic pursuits. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: auxiliary methods like :before and :after for multimethods?
On Jul 28, 2012, at 7:02 AM, Ben Smith-Mannschott wrote: On Fri, Jul 27, 2012 at 9:06 PM, Vinzent ru.vinz...@gmail.com wrote: robert-hooke actualy doesn't work with multimethods afaik. You can try my new library (https://github.com/dnaumov/hooks), but it's alpha (no docs yet, sorry). (defmulti foo* (fn [args] ...) ...) (defmethod foo* :x [args]...) (defmethod foo* :y [args] ...) (defn foo [args] (foo* args)) Only foo calls foo*. Everyone else calls foo. Apply hooks to foo. http://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering ;-) // Ben robert.hooke works fine with multimethods: user= (defmulti foo class) nil user= (defmethod foo :default [x] (str x)) #MultiFn clojure.lang.MultiFn@7539f0bb user= (require '[robert.hooke :refer (add-hook)]) nil user= (add-hook #'foo (fn [f [x]] (str K: (f x (#user$eval3072$fn__3074 user$eval3072$fn__3074@534b58c) user= (foo 42) K: 42 More interesting still would be the ability to add hooks to particular methods. `defmethod` doesn't define a new var, so that's not generally possible, but you can work around it by defining functions and tying them to multimethods in separate operations: user= (defmulti twice class) #'user/twice user= (defn twice-n [n] (* n n)) #'user/twice-n user= (defn twice-s [s] (str s s)) #'user/twice-s user= (.addMethod twice Number #'twice-n) #MultiFn clojure.lang.MultiFn@6a04919b user= (.addMethod twice String #'twice-s) #MultiFn clojure.lang.MultiFn@6a04919b user= (twice 5) 25 user= (twice hi) hihi user= (add-hook #'twice-n (fn [f [n]] (f (dec n (#user$eval3044$fn__3046 user$eval3044$fn__3046@fa328aa) user= (twice 5) 16 These sorts of situations makes me want for an add-method to go along with remove-method and get-method, just to avoid the .addMethod interop form. - Chas -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Experiences developing a crowdfunding site for open source projects in Clojure (from a Python background)
Hi Aaron, Thank you for the interesting post. I guess we all here have quite similar experience as code size shrink. I found myself digging around in github repos to actual read code instead of documentation a lot more than I ever did with Python. Agreed. In fact, for emacs/swank-clojure users this is one key-stroke(M-.) task. Cheers, Takahiro. On Friday, July 27, 2012 4:59:46 AM UTC+9, Aaron Lebo wrote: Hello! Sometime around 2 and a half months ago, I started to work on a new project using Clojure. I've been using Python heavily for about 6 six years working for a small direct mail company and before that started programming with Ruby on Rails. This new project was something out of left field, so I had different options on what technology to use. I ended up choosing Clojure, and my work on the site has been my first real experience using a lisp, Clojure, and the JVM. I'd like to share my experiences and how that has differed with my previous Python work. Before that, I'd like to make a little plug for my site. It is called kodefund http://www.kodefund.com (www.kodefund.com). The basic idea is to take the familiar Kickstarter model but to really focus on applying that to open source development. I feel that previous crowdfunding efforts have shown that there is an interest by developers to fund projects that they are enthusiastic about. When this works, everyone wins: the developer working on the project can devote their full time and effort on the actual project and still make a living and others get the benefits of the open source software. I feel like it is preferable over selling licenses to proprietary software or other efforts. So, every project on kodefund is required to be open source. This differentiates it from other crowdfunding sites, and helps to apply a filter: you know what you are getting when you go there instead of seeing dozens of projects for unrelated stuff. One other difference is that you can also start a project which is more or less a reverse Kickstarter. This allows you to take an idea for a project or issue you want fixed, raise funding, and find someone who will actually implement the project. Other users get to submit applications and you choose from them to find the most capable candidate. Once you chose an application, that person takes over the project. Finally, one other push I want to make is to open up proprietary software. Maybe your company has written some software in-house, but there's no real incentive to release it. What if you could crowdfund the software, get paid to release it, and the open source community as a whole could benefit from that? I feel like crowdfunding and open source software are an ideal fit. I'm getting off track here. I'll shift to my actual experiences using Clojure. I was more than a little nervous about using the JVM. It always seemed like some huge, scary thing, and digging into Java libraries was not something I wanted to do. Something which resolved this was leiningen. I feel like it is absolutely brilliant, and it really makes adding libraries to your project a non-issue. Things have slowly changed in Python, but it used to be that downloading dependencies was a global process and you ended up with a site-packages that was full of dozens of old libraries that you used for other projects. Being able to specify in my project.clj file exactly which libraries I need and those getting downloaded automatically is a really nice feature that I will look for similar functionality in other languages from now on. I was also pleasantly surprised by the library availability. The vast majority of things that I needed such as oauth2 support and such already have decent Clojure wrappers. When I did drop down into Java, I found that to be painless. The JVM really does have a wide swath of functionality already available. Some of the things that I ended up using were email libraries, date formatting libraries, and an rss feed generator. There never was a point where I felt like I was going to have to just roll things by hand. Most of the hard work has been done. Considering the language itself, one of the first things I noticed (or didn't) was the parentheses. I don't remember when, but they simply are a non-issue after a short amount of time. One slight thing I did have a problem with was that inserting a parenthesis at the wrong place could completely alter the flow of code and it was not immediately obvious. This is not an issue when you are closing off a line or two of expressions, but when you are halfway down the page, insert a paren and everything breaks, it could get frustrating. This is probably resolved through better editor usage. I unfortunately could never get emacs with clojure-mode and goodies working properly on my Windows machine, so I ended up using the counterclockwise Eclipse plugin. It was not a
Re: auxiliary methods like :before and :after for multimethods?
robert.hooke works fine with multimethods: user= (defmulti foo class) nil user= (defmethod foo :default [x] (str x)) #MultiFn clojure.lang.MultiFn@7539f0bb user= (require '[robert.hooke :refer (add-hook)]) nil user= (add-hook #'foo (fn [f [x]] (str K: (f x (#user$eval3072$fn__3074 user$eval3072$fn__3074@534b58c) user= (foo 42) K: 42 foo is a plain function now. -- 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: auxiliary methods like :before and :after for multimethods?
On Jul 28, 2012, at 4:36 PM, Vinzent wrote: robert.hooke works fine with multimethods: user= (defmulti foo class) nil user= (defmethod foo :default [x] (str x)) #MultiFn clojure.lang.MultiFn@7539f0bb user= (require '[robert.hooke :refer (add-hook)]) nil user= (add-hook #'foo (fn [f [x]] (str K: (f x (#user$eval3072$fn__3074 user$eval3072$fn__3074@534b58c) user= (foo 42) K: 42 foo is a plain function now. Oh, right, good point. I've generally used hooks to modify others' multimethods, and so I suppose I've been lucky to always apply the hook after all methods had been registered. - Chas -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: community interest in machine learning (?)
Hey Jim, Encog does look very interesting. Right now, I'm trying (and failing) to implement the sigmoid function. I'm using wikipedia's referencehttp://en.wikipedia.org/wiki/Sigmoid_function, and trying to use Incanter's (incanter/exp) function, but Incanter's function doesn't seem to work: user user (incanter/exp -3254604.9658621363) 0.0 user user (incanter/exp 3254604.9658621363) Infinity I took a peek at encog's java sigmoid implementationhttps://github.com/encog/encog-java-core/blob/master/src/main/java/org/encog/engine/network/activation/ActivationSigmoid.java, and while my calculus is correct, they are using their own exponential function. *i)* Is there another Incanter function I should be using? *ii)*Maybe the number going into (incanter/exp) has to be within a certain range? I'm getting that *3254604.9658621363* number as a linear combination of these inputs (i took the long value of time and randomized the weights). *iii)* Is there a different way to sum these value? Is this where input data massaging comes in? ({:key :time, :value #DateTime 2012-05-01T20:00:00.676Z, :weight 0.22072475374809264} {:key :bid, :value 1.3239, :weight 0.5831561982324751} {:key :ask, :value 1.32379, :weight 0.9364679759677283} {:key :bvolume, :value 300.0, :weight 0.5956072849191396} {:key :avolume, :value 225.0, :weight 0.07837823837657176}), There's a few other issues I'm still trying to understand. I outlined them in this quant.stackexchangehttp://quant.stackexchange.com/questions/3814/multilayer-perceptron-neural-network-for-time-series-predictionpost. But primarily: - Algorithmically, I don't understand how to achieve both bid and ask predictions with each tick? the i) linear combiner and ii) activation functions, coupled with the bias, act to produce 1 value - In Back Propagation, is it just the weights that are adjusted, or the biases as well? There are other things like how to decide the number of neurons in the hidden layer. But once I get a very simplistic code example working, I'll feel more confidence in understanding the mechanics of this neural network works. And I'd start using your clojure-encog library as it's probably much more complete than anything I could build. Any insights or examples you could provide would be great. Cheers Tim Washington Interruptsoftware.ca 416.843.9060 On Sat, Jul 28, 2012 at 8:51 AM, Dimitrios Jim Piliouras jimpil1...@gmail.com wrote: If you're doing anything related with neural nets I think clojure-encog is indeed the place to start... I've wrapped most of the original java encog v3 so far and I am actively using it for my own projects...I'd be very happy to hear your feedback if you decide to use it after all...The truth is I've not provided a wiki but I have provided an examples.clj where I've ported some of the most famous encog examples using my wrapper...hope you find it useful! any help you need along the way don't hesitate to ask! predicting financial series has been done in the past by heaton-research but unfortunately I've not ported that example! maybe it is time to do so as soon as I return from holidays... take care... :) Jim On Fri, Jul 27, 2012 at 10:03 PM, Timothy Washington twash...@gmail.comwrote: I'm working on a Neural Network application to tech myself machine learning and AI. - https://github.com/twashing/nn There's nothing there right now. But I'm keenly interested in the field, and getting a working project, predicting financial time series. I'm keen to check out clojure-encog https://github.com/jimpil/clojure-encog, and any other AI library. I just want to make sure I understand the mechanics of the algorithms that are being used. -- 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: community interest in machine learning (?)
On 7/28/12 4:52 PM, Timothy Washington wrote: Hey Jim, Encog does look very interesting. Right now, I'm trying (and failing) to implement the sigmoid function. I'm using wikipedia's reference http://en.wikipedia.org/wiki/Sigmoid_function, and trying to use Incanter's (incanter/exp) function, but Incanter's function doesn't seem to work: user user (incanter/exp -3254604.9658621363) 0.0 user user (incanter/exp 3254604.9658621363) Infinity Try this... (use 'incanter.core) = (defn sigmoid [z] (div 1 (plus 1 (exp (minus z) = (sigmoid 0) 0.5 = (sigmoid 7) 0.9990889488055994 = (sigmoid 112) 1.0 = (sigmoid -112) 2.285693676718672E-49 If you want the library to be fast you will want to be using primitives or use the underlying colt API.. for learning purposes you don't really need to worry about that though. HTH, Ben -- 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
Translating from Prolog to core.logic
I'm having trouble translating some Prolog code to core.logic. In particular, I'd like to do something like this: 2 ?- assert(a(b)). true. 3 ?- assert(a(a(b))). true. 4 ?- a(X). X = b ; X = a(b). 5 ?- a(a(X)). X = b. However, the core.logic equivalent doesn't seem to work: user (fact a 1) nil user (fact a (a 1)) nil user (run* [q] (a q)) (1 #user$eval4021$fn__4022$fn__4023 user$eval4021$fn__4022$fn__4023@9c7dc5) user (run* [q] (a (a q))) () Does anyone know how to represent those kinds of relations? Thanks. -- 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: Clojure Sticker
On Sat, Jul 28, 2012 at 2:05 PM, Rich Hickey richhic...@gmail.com wrote: You can now get official Clojure stickers here: http://clojure.org/swag I'll be adding T-shirts etc soon. Rich On Jul 19, 2012, at 3:13 PM, charlie wrote: Yeah any sort of vector image should work for us On Wed, Jul 18, 2012 at 7:59 PM, Alex Kurilin a...@kurilin.net wrote: +1. A temporary workaround would be getting a .svg that you could turn into stickers yourself, if that's ok with Rich. We did something similar with the vim logo on Reddit. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- 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 Awesome. -- 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: Experiences developing a crowdfunding site for open source projects in Clojure (from a Python background)
I can't access your site. Also, I wanted to ask whether you used Noir or used a lower-level option(Compojure,etc)? On Friday, July 27, 2012 1:44:46 AM UTC+5:45, Aaron Lebo wrote: Hello! Sometime around 2 and a half months ago, I started to work on a new project using Clojure. I've been using Python heavily for about 6 six years working for a small direct mail company and before that started programming with Ruby on Rails. This new project was something out of left field, so I had different options on what technology to use. I ended up choosing Clojure, and my work on the site has been my first real experience using a lisp, Clojure, and the JVM. I'd like to share my experiences and how that has differed with my previous Python work. Before that, I'd like to make a little plug for my site. It is called kodefund http://www.kodefund.com (www.kodefund.com). The basic idea is to take the familiar Kickstarter model but to really focus on applying that to open source development. I feel that previous crowdfunding efforts have shown that there is an interest by developers to fund projects that they are enthusiastic about. When this works, everyone wins: the developer working on the project can devote their full time and effort on the actual project and still make a living and others get the benefits of the open source software. I feel like it is preferable over selling licenses to proprietary software or other efforts. So, every project on kodefund is required to be open source. This differentiates it from other crowdfunding sites, and helps to apply a filter: you know what you are getting when you go there instead of seeing dozens of projects for unrelated stuff. One other difference is that you can also start a project which is more or less a reverse Kickstarter. This allows you to take an idea for a project or issue you want fixed, raise funding, and find someone who will actually implement the project. Other users get to submit applications and you choose from them to find the most capable candidate. Once you chose an application, that person takes over the project. Finally, one other push I want to make is to open up proprietary software. Maybe your company has written some software in-house, but there's no real incentive to release it. What if you could crowdfund the software, get paid to release it, and the open source community as a whole could benefit from that? I feel like crowdfunding and open source software are an ideal fit. I'm getting off track here. I'll shift to my actual experiences using Clojure. I was more than a little nervous about using the JVM. It always seemed like some huge, scary thing, and digging into Java libraries was not something I wanted to do. Something which resolved this was leiningen. I feel like it is absolutely brilliant, and it really makes adding libraries to your project a non-issue. Things have slowly changed in Python, but it used to be that downloading dependencies was a global process and you ended up with a site-packages that was full of dozens of old libraries that you used for other projects. Being able to specify in my project.clj file exactly which libraries I need and those getting downloaded automatically is a really nice feature that I will look for similar functionality in other languages from now on. I was also pleasantly surprised by the library availability. The vast majority of things that I needed such as oauth2 support and such already have decent Clojure wrappers. When I did drop down into Java, I found that to be painless. The JVM really does have a wide swath of functionality already available. Some of the things that I ended up using were email libraries, date formatting libraries, and an rss feed generator. There never was a point where I felt like I was going to have to just roll things by hand. Most of the hard work has been done. Considering the language itself, one of the first things I noticed (or didn't) was the parentheses. I don't remember when, but they simply are a non-issue after a short amount of time. One slight thing I did have a problem with was that inserting a parenthesis at the wrong place could completely alter the flow of code and it was not immediately obvious. This is not an issue when you are closing off a line or two of expressions, but when you are halfway down the page, insert a paren and everything breaks, it could get frustrating. This is probably resolved through better editor usage. I unfortunately could never get emacs with clojure-mode and goodies working properly on my Windows machine, so I ended up using the counterclockwise Eclipse plugin. It was not a horrible experience but things such as auto-indenting a large block of code was something I never figured out. Continuing on the surface, some of my favorite parts of the language are little syntax additions. I absolutely
JDBC Timezone Issue
Hi, I have raised a JIRA issue (JDBC-35) regarding the timezones returned from the ResultSet getter method. http://dev.clojure.org/jira/browse/JDBC-35 I have also attached a patch to this issue. http://dev.clojure.org/jira/secure/attachment/11394/resultset-timezone.diff Please review my patch and let me know if there is any better solution to this problem. Thanks, Jestine Paul -- 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
Why is EMPTY.withMeta(meta()) used instead of just EMPTY in clojure.lang.*?
Looking at the persistent types in clojure.lang.* (PersistentVector.java et al.) I see several occurrences of the idiom EMPTY.withMeta(meta()) where EMPTY is a constant (static final) denoting an empty collection of the appropriate type. What I can not understand, given that these types are all persistent, is why the EMPTY constant is, in effect, copied at most places where it is used. Why not use the same EMPTY instance instead, i.e. replace EMPTY.withMeta(meta()) with just EMPTY. Unless I miss something this could not hurt and would save some time and space. Regards, -- 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: Translating from Prolog to core.logic
On Sat, Jul 28, 2012 at 8:53 PM, JvJ kfjwhee...@gmail.com wrote: I'm having trouble translating some Prolog code to core.logic. In particular, I'd like to do something like this: 2 ?- assert(a(b)). true. 3 ?- assert(a(a(b))). true. 4 ?- a(X). X = b ; X = a(b). 5 ?- a(a(X)). X = b. While there is no direct translation as far as I can see, something like the following accomplishes pretty much the same thing: (defne foo [x] ([[:a :b]]) ([[:a [:a :b]]])) (run* [q] (foo [:a q])) ;; = (:b [:a :b]) -- 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: Why is EMPTY.withMeta(meta()) used instead of just EMPTY in clojure.lang.*?
On Sat, Jul 28, 2012 at 7:47 AM, Per Mildner per.mildner.use...@gmail.comwrote: Looking at the persistent types in clojure.lang.* (PersistentVector.java et al.) I see several occurrences of the idiom EMPTY.withMeta(meta()) where EMPTY is a constant (static final) denoting an empty collection of the appropriate type. What I can not understand, given that these types are all persistent, is why the EMPTY constant is, in effect, copied at most places where it is used. Why not use the same EMPTY instance instead, i.e. replace EMPTY.withMeta(meta()) with just EMPTY. Unless I miss something this could not hurt and would save some time and space. In this context, the empty() method does not mean get an empty of this type, instead it means empty this collection. So if we want to return a new collection that looks the same, except it is empty, then we need to pull in the metadata from the old collection. Example: = (meta (empty (with-meta [1 2 3] {:foo true}))) {:foo true} Timothy -- 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: community interest in machine learning (?)
Thanks Cameron, I've tried again and indeed it does work now. Thanks so much, -Lee On Jul 26, 2012, at 6:52 PM, cameron wrote: Hi Lee, apologies for the missing dependencies, it's been a while since I worked on the project and I had local copies of jscheme in .m2. The documentation has been fixed and I've updated the dependencies. I've run the samples a built a fresh checkout on a clean machine so I think you should be ok now though I did have to delete ~/.m2 in one case. Let me know if you have any problems. Cheers, Cameron. -- Lee Spector, Professor of Computer Science Cognitive Science, Hampshire College 893 West Street, Amherst, MA 01002-3359 lspec...@hampshire.edu, http://hampshire.edu/lspector/ Phone: 413-559-5352, Fax: 413-559-5438 -- 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: Translating from Prolog to core.logic
Alright, that makes sense. I suppose that since facts are represented under the hood as relations, anyways, that this might work. Thanks. On Saturday, 28 July 2012 21:52:46 UTC-4, David Nolen wrote: On Sat, Jul 28, 2012 at 8:53 PM, JvJ kfjwhee...@gmail.com wrote: I'm having trouble translating some Prolog code to core.logic. In particular, I'd like to do something like this: 2 ?- assert(a(b)). true. 3 ?- assert(a(a(b))). true. 4 ?- a(X). X = b ; X = a(b). 5 ?- a(a(X)). X = b. While there is no direct translation as far as I can see, something like the following accomplishes pretty much the same thing: (defne foo [x] ([[:a :b]]) ([[:a [:a :b]]])) (run* [q] (foo [:a q])) ;; = (:b [:a :b]) -- 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