Re: Performance of calling primitive type hinted functions passed as arguments

2013-04-25 Thread Gunnar Völkel
Some time ago I dug into primitive type hints and how the Clojure compiler uses them. When the compiler finds primitive type hints on a function, say (defn f [^long n] ...), the generated class for that function implements a primitive interface, IFn$LO in this case, and generates appropriate cod

Re: Question about code style

2013-04-25 Thread Stefan Kamphausen
You might want to consider adding it to https://github.com/bbatsov/clojure-style-guide :-) -- -- 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 modera

Re: Defining custom tags using hiccup ?

2013-04-25 Thread Dave Sann
I replied to this a long time ago and in the original case - I did not see huge value in the suggestion. But recently I wanted to do exactly what Murtaza suggests. There are a couple of reasons why I think this capability would be useful. (And rereading Murtaza's email - I think this is what he

Re: Defining custom tags using hiccup ?

2013-04-25 Thread Dave Sann
see this commit for main changes to hiccup https://github.com/davesann/hiccup/commit/e8c06d884eb22a2cdd007f880a9dd5e1c13669a4 On Thursday, 25 April 2013 18:55:52 UTC+10, Dave Sann wrote: > > I replied to this a long time ago and in the original case - I did not see > huge value in the suggestion

Re: [GSoC 2013] core.logic CLP(Prob)

2013-04-25 Thread Martin Forsgren
What are your thoughts on slpKanren? Could it be used as a base for probabilistic programming in core.logic? https://github.com/webyrd/slpKanren - Martin Den onsdagen den 24:e april 2013 kl. 17:34:05 UTC+2 skrev David Nolen: > > This is great, thanks for the thoughts, gist & links! > > > On Wed,

Re: Defining custom tags using hiccup ?

2013-04-25 Thread Dave Sann
one other thought. It is possible just to manipulate the hiccup data as suggested by Walter above. This may be better because it is independent. But I wonder about performance costs of processing the structures twice (expand and then render) rather than once (render). Dave -- -- You receive

Re: Performance of calling primitive type hinted functions passed as arguments

2013-04-25 Thread Alice
Wow! That's awesome. It's even faster! Thanks. (defn foo1 [^long l cb] (cb l)) (defn foo2 [^long l cb] (invoke-primitive O [L] cb l)) (time (dotimes [n 100] (foo1 n (fn [l] nil (time (dotimes [n 100] (foo2 n (fn [^long l] nil "Elapsed time: 7.622627 msecs" "Elapsed t

Re: Performance of calling primitive type hinted functions passed as arguments

2013-04-25 Thread Alice
The reason foo2 is faster is that foo1 is passing a primitive long value to cb, which caused boxing. Without that, the performance seems to be exactly the same, which it should be! On Apr 25, 6:50 pm, Alice wrote: > Wow! That's awesome. It's even faster! Thanks. > > (defn foo1 [^long l cb] (cb l)

Re: What's the difference between a "sequence" and a "seq"?

2013-04-25 Thread fb
the conceptional differences between collection and sequences are confusing quite a bit. A nice wrap up by Tim McCormack can be found here: http://www.brainonfire.net/files/seqs-and-colls/main.html (via Sean Corfield) -fb Am Sonntag, 31. März 2013 14:58:15 UTC+2 schrieb Alice: > > On http://c

Re: [GSoC 2013] core.logic CLP(Prob)

2013-04-25 Thread David Nolen
On Thu, Apr 25, 2013 at 5:29 AM, Martin Forsgren wrote: > What are your thoughts on slpKanren? Could it be used as a base for > probabilistic programming in core.logic? > https://github.com/webyrd/slpKanren > > - Martin > It's definitely worth taking a look at and assessing. It does have the bene

Re: [GSoC 2013] core.logic CLP(Prob)

2013-04-25 Thread Michał Marczyk
I've actually taken a stab at porting slpKanren; I think there was something I wanted to tweak, so I'll take another look at the code, do the tweaking (if any) and post it sometime soon. (I'm a bit overloaded this week, so it might take longer than it otherwise would...) Probabilistic programming

Re: What's the difference between a "sequence" and a "seq"?

2013-04-25 Thread Rostislav Svoboda
+100. Thx a lot! On 25 April 2013 13:45, fb wrote: > the conceptional differences between collection and sequences are confusing > quite a bit. > A nice wrap up by Tim McCormack can be found here: > > http://www.brainonfire.net/files/seqs-and-colls/main.html > (via Sean Corfield) > > -fb > > Am S

Re: New CSS library - Garden

2013-04-25 Thread JeremyS
Hi Murtaza, the simple way to go is have something like (def rules1 [...]) (def rules2 [...]) (spit "rules.css" (css (concat rules1 rules2))) I am not sure about my good use of the library here but I think the idea is there. When you develop with the repo you can just eval the (spit ...) ca

Do functions never get inlined by jvm?

2013-04-25 Thread Alice
I create many small methods in java without worrying about the performance since it's usually the target of inline optimization. For example, public class Foo { public static long inc(long l) { return ++l; } public static long f1() { long l = 0; for (int i=0; i < 10; i++

Re: Do functions never get inlined by jvm?

2013-04-25 Thread David Nolen
primitive hinted fns will get inlined. You can also play the same kinds of games that Clojure does with definterface+deftype and fns that declare :inline metadata. If you don't want to learn the subtleties of Clojure performance tuning then you can always write your performance critical bits in Ja

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Alice
Primitive hinted funtions seem to be not an exception. (defn my-inc ^long [^long l] (inc l)) (defn f1 [^long l] (inc l)) (defn f2 [^long l] (my-inc l)) (time (dotimes [n 1] (f1 1))) (time (dotimes [n 1] (f1 1))) (time (dotimes [n 1] (f1 1))) (time (dotimes [n 1] (

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Ambrose Bonnaire-Sergeant
jvm.tools.analyzer is a nice tool for exploration in this area. I don't personally know all the subtleties here, but after some playing I managed to emit an unboxing function. I could tell from the AST. https://gist.github.com/frenchy64/5459989 Thanks, Ambrose On Thu, Apr 25, 2013 at 9:44 PM,

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Phil Hagelberg
Three repetitions is not nearly enough to get a feel for how hotspot optimizes functions when it detects they're in a tight loop. I don't know how javac works, but Clojure doesn't optimize much for cases where hotspot can do a much better job over time. -Phil -- -- You received this message bec

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Jonathan Fischer Friberg
If that's a problem, you could try https://github.com/hugoduncan/criterium On Thu, Apr 25, 2013 at 5:38 PM, Phil Hagelberg wrote: > Three repetitions is not nearly enough to get a feel for how hotspot > optimizes functions when it detects they're in a tight loop. I don't know > how javac works,

Re: Do functions never get inlined by jvm?

2013-04-25 Thread David Nolen
You have to be very careful with microbenchmarks like this. I recommend writing less trivial benchmarks. For example http://github.com/clojure/test.benchmark/blob/master/src/main/clojure/alioth/spectral_norm.clj This code demonstrates performance on par with plain Java. There are many other simila

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Alice
Found this blog post written by fogus: "To provide this level of flexibility Clojure establishes a level of indirection. Specifically, all function lookups through a Var occur, at the lowest level, through an atomic volatile. This happens every time that a function bound using the def/defn special

Re: Do functions never get inlined by jvm?

2013-04-25 Thread David Nolen
Which is out of date. On Thu, Apr 25, 2013 at 12:47 PM, Alice wrote: > Found this blog post written by fogus: > > "To provide this level of flexibility Clojure establishes a level of > indirection. Specifically, all function lookups through a Var occur, > at the lowest level, through an atomic

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Alice
Care to elaborate which part is out of date? On Apr 26, 1:48 am, David Nolen wrote: > Which is out of date. > > > > > > > > On Thu, Apr 25, 2013 at 12:47 PM, Alice wrote: > > Found this blog post written by fogus: > > > "To provide this level of flexibility Clojure establishes a level of > > ind

Re: Do functions never get inlined by jvm?

2013-04-25 Thread David Nolen
It just doesn't accurately describe how primitive fns work when used non-higher order, nor is it correct for the tricks you can play with non-higher order fn usage + :inline metadata. JVM will aggressively inline these cases. On Thu, Apr 25, 2013 at 1:03 PM, Alice wrote: > Care to elaborate whi

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Michael Klishin
2013/4/25 David Nolen > + :inline metadata Which is not documented anywhere and might as well not exist for regular Clojure users. -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- You received this message because you are subscribed to the Google Groups "Cloju

Re: Do functions never get inlined by jvm?

2013-04-25 Thread David Nolen
(doc definline) On Thu, Apr 25, 2013 at 1:17 PM, Michael Klishin < michael.s.klis...@gmail.com> wrote: > > 2013/4/25 David Nolen > >> + :inline metadata > > > Which is not documented anywhere and might as well not exist for regular > Clojure users. > -- > MK > > http://github.com/michaelklishin

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Michael Klishin
2013/4/25 David Nolen > (doc definline) Macro Experimental - like defmacro, except defines a named function whose body is the expansion, calls to which may be expanded inline as if it were a macro. Cannot be used with variadic (&) args. If you think this is useful to regular users (who h

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Softaddicts
user=> (apropos "inline") (definline) user=> (doc inline) .. > 2013/4/25 David Nolen > > > (doc definline) > > > Macro > Experimental - like defmacro, except defines a named function whose > body is the expansion, calls to which may be expanded inline as if > it were a macro. Cannot b

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Michael Klishin
2013/4/25 Softaddicts > user=> (apropos "inline") > (definline) > Yeah, yeah. It all starts with (apropos "apropos"), right? I knew it. -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- You received this message because you are subscribed to the Google Groups "

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Softaddicts
You asked a simple question, you got a plain answer. Now if you are still grunting there's not much I can do about that. I do agree that the doc string could be a bit more descriptive. But what does it mean to be understandable by "normal" users ? I am still trying to size what is a "normal" Lisp

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Michael Klishin
2013/4/25 Softaddicts > Inlining is a concept that existed for more than 40 years in many > programming > languages. It's not anything new. > The OP probably know what inlining is because, hm, the subject has that word. Then she is recommended to use something that only technically has documenta

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Gary Trakhman
You could come up with definline yourself by thinking about what inlining is and wrapping things in macros, it seems to me the real problem definline solves is to also be able to use the output as a function, which is more about keeping convenience than performance gains. I think the people who wa

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Softaddicts
Well you looked quite outraged that it could not be found easily. I demonstrated that doc strings can be easily searched. Of course my answer comes in total antagonism with your usual position about the bad state of the existing documentation which is incomplete, wrong, ... and so forth. You

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Michael Klishin
2013/4/25 Softaddicts > Of course my answer comes in total antagonism with your usual position > about the > bad state of the existing documentation which is incomplete, wrong, ... > and so forth. > Your reaction does not suprise me, your behavior is quite predictable. > Like an old vinyl record

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Softaddicts
May I suggest you an upgrade ? http://www.ehow.com/how_6949396_record-78-vinyl-records-cd.html > 2013/4/25 Softaddicts > > > Of course my answer comes in total antagonism with your usual position > > about the > > bad state of the existing documentation which is incomplete, wrong, ... > > and

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Gary Trakhman
Good vinyls are considered higher quality by audiophiles, because there are less stages in between the mastering and amplification. There is more potential of better performance. It can be considered a real-world case of inlining. On Thu, Apr 25, 2013 at 3:16 PM, Softaddicts wrote: > May I sug

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Michael Klishin
2013/4/25 Softaddicts > May I suggest you an upgrade ? > > http://www.ehow.com/how_6949396_record-78-vinyl-records-cd.html > Ah, a batch of fresh preaching from Mr. Defend Clojure/core At All Costs. Best Canadian export since Wayne Gretzky! -- MK http://github.com/michaelklishin http://twitt

Re: Do functions never get inlined by jvm?

2013-04-25 Thread JeremyS
Hi guys, Maybe we'll see some change in the future, Atlas already seems to be interesting. I think there is also a huge potential with Codeq. >From what I gather Codeq only parse thing looking like (defsomething ) for now. But we can imagine that if we augment th

Re: Do functions never get inlined by jvm?

2013-04-25 Thread gaz jones
There seems to be some rule that given sufficient time and enough participants, all threads deteriorate into an argument about the current state of clojure documentation and a huge post from Tim Daly regarding literate programming in 3...2...1... On Thu, Apr 25, 2013 at 2:23 PM, Gary Trakhman wro

Re: Do functions never get inlined by jvm?

2013-04-25 Thread Softaddicts
I am not defending it at all cost. Just tired of earing you whining the same complaint in around 70% of your posts and in some cases, like this one, unrelated with the original issue. Like if "correct" documentation could replace self acquired knowledge about how things work. This is why civilisa

merge nested maps

2013-04-25 Thread Joachim De Beule
Hi list, I was searching for an "easy" way to combined nested maps, e.g. as in (combine {:foo {:bar "baz"}} {:foo {:x "y"}}) => {:foo {:bar "baz", :x "y"}} I would expect that there is some core map operation to do this, but neither merge nor unify work as they simply return {:foo {:x "y"}}, a

Re: merge nested maps

2013-04-25 Thread Michael Gardner
On Apr 25, 2013, at 15:41 , Joachim De Beule wrote: > I was searching for an "easy" way to combined nested maps, e.g. as in > > (combine {:foo {:bar "baz"}} {:foo {:x "y"}}) > => {:foo {:bar "baz", :x "y"}} user=> (merge-with merge {:foo {:bar "baz"}} {:foo {:x "y"}}) {:foo {:x "y", :bar "baz"

Re: merge nested maps

2013-04-25 Thread Cedric Greevey
Seems you want a cross between update-in and merge. Maybe something like this? (defn combine "Merge maps, recursively merging nested maps whose keys collide." ([] {}) ([m] m) ([m1 m2] (reduce (fn [m1 [k2 v2]] (if-let [v1 (get m1 k2)] (if (and (map? v1) (ma

Re: merge nested maps

2013-04-25 Thread Jorge Urdaneta
It was fun to try a naive implementation (defn combine [m1 m2] (let [mm1 (transient m1)] (do (doseq [k (keys m2)] (if (contains? m1 k) (assoc! mm1 k (conj (mm1 k) (m2 k))) (assoc! mm1 k (m2 k (persistent! mm1 On 25/04/13 16:29, Cedric Greev

Re: merge nested maps

2013-04-25 Thread Stuart Sierra
Here's a way to do it from the Pedestal demo source code : (defn deep-merge "Recursively merges maps. If keys are not maps, the last value wins." [& vals] (if (every?

Re: core.logic: Strange behaviour when using featurec with nested feature map (bug?).

2013-04-25 Thread David Nolen
Looks like a featurec bug, please file a ticket http://dev.clojure.org/jira/browse/LOGIC Thanks! David On Thu, Apr 25, 2013 at 5:53 PM, Martin Forsgren wrote: > Hi! > > I noticed something strange when using featurec with a nested feature map(I'm > using core.logic 0.8.3). > This works as expe

Re: New CSS library - Garden

2013-04-25 Thread Joel Holdbrooks
Murtaza, Thanks for having a look at the library. I'll try to answer you questions as best as I can. *How does Garden compare to other pre processors such as sass and less?* * * There are some similarities with Garden and other CSS preprocessors. I've tried to bring over the ones I found most us

Re: New CSS library - Garden

2013-04-25 Thread Clinton Dreisbach
One interesting thing you could do, given both Garden and ClojureScript, is package CSS frameworks like Twitter Bootstrap or Zurb Foundation as a Clojure library. I am sorely tempted to give this a try. On Thu, Apr 25, 2013 at 6:12 PM, Joel Holdbrooks wrote: > Murtaza, > > Thanks for having a loo

Re: New CSS library - Garden

2013-04-25 Thread Joel Holdbrooks
It's funny you should bring that up! I've actually been working on extracting the grid system from Bootstrap and modular scale from Foundation. But it's mostly been tinkering. * I am sorely tempted to give this a try.* Please do! If I come up with something I'll be sure to share a Gist. On Thu

Re: Do functions never get inlined by jvm?

2013-04-25 Thread u1204
...0? :-) Tim Daly -- -- 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 gr

[ANN] A github issues app/bot to better serve users

2013-04-25 Thread Gabriel Horner
Hi, I thought I'd share a github issues app/bot I wrote to make my life easier as an author and hopefully my users: https://github.com/cldwalker/gh-active-issues#readme The app does two main things: * It lists issues the maintainer considers active. See my list at https://gh-active-issues.hero

Re: [GSoC 2013] core.logic CLP(Prob)

2013-04-25 Thread Maximilien Rzepka
For the sake of completion ;) Nils Bertschinger's work https://github.com/bertschi/ProbClojureNice https://groups.google.com/forum/?fromgroups=#!topic/clojure/9NhsFga4D9s Le mercredi 24 avril 2013 11:34:14 UTC+2, Zack Maril a écrit : > > Lately, I've been on a bit of a jag into probabilistic p