Re: Idiomatically returning one or two values from a function.
On Wed, Sep 28, 2011 at 12:15, Daniel Solano Gomez cloj...@sattvik.com wrote: On Wed Sep 28 18:52 2011, Daniel Pittman wrote: I have problem that I have been thrashing back and forth over the best design of for a week now, and I can't work out the nicest way to handle it. Specifically, I have a collection of functions that return a primary result, and might also return a secondary annotation about that result. Why not always return a vector? That is more or less what a tuple is. *nod* Thanks, to you, and the other contributors. That feels like the right answer, and I guess I was hung up on not forcing a single value to be returned in a wrapper so much that I couldn't see it staring at me. Daniel -- ♲ Made with 100 percent post-consumer electrons -- 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: (flatten )
ChrisR christopher.roseng...@gmail.com writes: Hi there, possibly the flatten documentation is wrong as (flatten nil) for me is returning the empty list rather than nil. (1.3.0). Indeed, that's because it uses `filter' which produces a lazy seq. Most probably, in this case it's just the docstring that should be fixed. Is there a better place to post this? If no core team member picks up the issue, maybe add it to the issue tracker. http://dev.clojure.org/jira Bye, Tassilo -- 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: suggestion for clojure development
I think that backward compatibilities problem do hurt. Some people will not invest in an unstable language by default and some will be tempted to give up after experimenting too many problem with it. We don't choose a language,we choose a full echosystem that include libraries, IDE tooling, documentation, community, long term support. So this is more a question of tradeoff between having the best possible language and breaking or not backward compatibility. But I would say that clojure is not made for the masses. (Java/C# are for that). Clojure is more for geeks/hackers/searchers that love computer science and want a fun language to work with. Clojure core team did a great job ensure that clojure has a good reach in term of platform (JVM, CLR, browsers) and also to bring the best possible language. So the problem should be from what ecosystem, language combination you benefit most. Clojure bring outstanding expressivity and consision to programs. It allow very expressive DSLs and bring interresting concepts toward managing shared state. For me this is more than enough to consider clojure as a very viable alternative. On Sep 29, 2:54 am, Michael Gardner gardne...@gmail.com wrote: I don't think there will (nor should) ever be a declaration by the core team that from this point onward, we will never break backwards compatibility. There's always a trade-off between maintaining backwards compatibility and making improvements to the language. Naturally, as the language matures the tradeoff will shift towards compatibility, but in my opinion it would be foolish to set anything in stone. I don't think the lack of any such promise has hurt Python, for example; and while the transition to 3.0 certainly seems to have been slow and painful, I don't doubt the language will survive. -- 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: pattern matching in clojure
Thanks for feedback. But now I'm came across a problem. I'm studying Learn You a Haskell for Great Good! and I'm on chapter Functionally Solving Problems reading Reverse Polish notation calculator. I wanted to write it in Clojure. So instead of: http://pastebin.com/QzhbyD6d I wrote: http://pastebin.com/fsChN96D But as you can see the first try doesn't work as expected. The destruction of stack doesn't work as expected. Expectation is written below as let expression. Anyone? On Sep 30, 6:56 am, Kevin Downey redc...@gmail.com wrote: Last I checked matchjure generates fns which break recur (there is an issue open for it). Trading recursion for matching seems like a bad deal, I recommend using match instead. On Sep 29, 2011 4:32 AM, Christian Pohlmann chr.pohlm...@googlemail.com wrote: Additionally to core.match there is also matchure [1] which comes with a defn-match that can be used like this: (defn-match choose ([_ 0] 1) ([0 _] 0) ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k This makes defining functions fairly close to what you're used from Haskell. [1]https://github.com/dcolthorp/matchure Christian On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Hi! Is there any way to define function with pattern matching in function signature as it is in haskell? Bye! -- 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: pattern matching in clojure
Btw. I'm using [match 0.2.0-SNAPSHOT] and Clojure 1.3 but this import instruction (use '[match.core :only [match]]) from official website of match library doesn't work, only (use '[clojure.core.match.core :only [match ] ]) works and I have given a try to matchure and IT WORKS ;-) But why do I have to define question character as a prefix on destruction variables? This doesn't help in any way and I doubt that is helps matchure too. And here is the contest winning code: http://pastebin.com/w7sKH0Pw Thanks to all and looking to match library being fixed or explained what is wrong with previous code. See you later! On Sep 30, 10:36 am, Michael Jaaka michael.ja...@googlemail.com wrote: Thanks for feedback. But now I'm came across a problem. I'm studying Learn You a Haskell for Great Good! and I'm on chapter Functionally Solving Problems reading Reverse Polish notation calculator. I wanted to write it in Clojure. So instead of:http://pastebin.com/QzhbyD6d I wrote:http://pastebin.com/fsChN96D But as you can see the first try doesn't work as expected. The destruction of stack doesn't work as expected. Expectation is written below as let expression. Anyone? On Sep 30, 6:56 am, Kevin Downey redc...@gmail.com wrote: Last I checked matchjure generates fns which break recur (there is an issue open for it). Trading recursion for matching seems like a bad deal, I recommend using match instead. On Sep 29, 2011 4:32 AM, Christian Pohlmann chr.pohlm...@googlemail.com wrote: Additionally to core.match there is also matchure [1] which comes with a defn-match that can be used like this: (defn-match choose ([_ 0] 1) ([0 _] 0) ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k This makes defining functions fairly close to what you're used from Haskell. [1]https://github.com/dcolthorp/matchure Christian On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Hi! Is there any way to define function with pattern matching in function signature as it is in haskell? Bye! -- 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: pattern matching in clojure
There's a problem with destructuring lists (seems like a bug). If stack is always a vector, it works. (defn rpn' [ stack symb ] (match [stack symb] [ [x y z ] * ] (apply vector (* x y ) z) [ [x y z ] + ] (apply vector (+ x y ) z) [ x sum ] [ (reduce + x) ] [ x y ] (apply vector (read-string y) x) )) (defn calculator'[ input ] (first (reduce rpn' [] (re-seq #\S+ input (calculator' 1 2 10 2 3 + * sum ) ;= 53 core.match isn't well road tested yet, still early days. Thanks! Ambrose On Fri, Sep 30, 2011 at 4:36 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Thanks for feedback. But now I'm came across a problem. I'm studying Learn You a Haskell for Great Good! and I'm on chapter Functionally Solving Problems reading Reverse Polish notation calculator. I wanted to write it in Clojure. So instead of: http://pastebin.com/QzhbyD6d I wrote: http://pastebin.com/fsChN96D But as you can see the first try doesn't work as expected. The destruction of stack doesn't work as expected. Expectation is written below as let expression. Anyone? On Sep 30, 6:56 am, Kevin Downey redc...@gmail.com wrote: Last I checked matchjure generates fns which break recur (there is an issue open for it). Trading recursion for matching seems like a bad deal, I recommend using match instead. On Sep 29, 2011 4:32 AM, Christian Pohlmann chr.pohlm...@googlemail.com wrote: Additionally to core.match there is also matchure [1] which comes with a defn-match that can be used like this: (defn-match choose ([_ 0] 1) ([0 _] 0) ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k This makes defining functions fairly close to what you're used from Haskell. [1]https://github.com/dcolthorp/matchure Christian On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Hi! Is there any way to define function with pattern matching in function signature as it is in haskell? Bye! -- 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 -- 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: pattern matching in clojure
Hi Michael On Fri, Sep 30, 2011 at 4:51 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Btw. I'm using [match 0.2.0-SNAPSHOT] and Clojure 1.3 but this import instruction (use '[match.core :only [match]]) from official website of match library doesn't work, only (use '[clojure.core.match.core :only [match ] ]) works Thanks, fixed. and I have given a try to matchure and IT WORKS ;-) Good to hear :) But why do I have to define question character as a prefix on destruction variables? This doesn't help in any way and I doubt that is helps matchure too. From the perspective of core.match, some trickery is involved to know whether to create a new local binding, or to perform an equals test. We look at the surrounding scope at compile time to determine this. Another way would be for the user to provide such information, which seems to be the way matchure has gone, with prefix ? (speculative, I don't actually know the reasons behind the decision) Example: (core.match) (let [x [1 2 3] a 1 b 2 ] (match [x] [[b a c as]] :first ;; b and a are local, perform = test, create new binding c [[a b c as]] :second ;; same, but successful match )) 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
Re: pattern matching in clojure
I've opened an issue concerning this bug: http://dev.clojure.org/jira/browse/MATCH-21 Ambrose On Fri, Sep 30, 2011 at 5:04 PM, Ambrose Bonnaire-Sergeant abonnaireserge...@gmail.com wrote: There's a problem with destructuring lists (seems like a bug). If stack is always a vector, it works. (defn rpn' [ stack symb ] (match [stack symb] [ [x y z ] * ] (apply vector (* x y ) z) [ [x y z ] + ] (apply vector (+ x y ) z) [ x sum ] [ (reduce + x) ] [ x y ] (apply vector (read-string y) x) )) (defn calculator'[ input ] (first (reduce rpn' [] (re-seq #\S+ input (calculator' 1 2 10 2 3 + * sum ) ;= 53 core.match isn't well road tested yet, still early days. Thanks! Ambrose On Fri, Sep 30, 2011 at 4:36 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Thanks for feedback. But now I'm came across a problem. I'm studying Learn You a Haskell for Great Good! and I'm on chapter Functionally Solving Problems reading Reverse Polish notation calculator. I wanted to write it in Clojure. So instead of: http://pastebin.com/QzhbyD6d I wrote: http://pastebin.com/fsChN96D But as you can see the first try doesn't work as expected. The destruction of stack doesn't work as expected. Expectation is written below as let expression. Anyone? On Sep 30, 6:56 am, Kevin Downey redc...@gmail.com wrote: Last I checked matchjure generates fns which break recur (there is an issue open for it). Trading recursion for matching seems like a bad deal, I recommend using match instead. On Sep 29, 2011 4:32 AM, Christian Pohlmann chr.pohlm...@googlemail.com wrote: Additionally to core.match there is also matchure [1] which comes with a defn-match that can be used like this: (defn-match choose ([_ 0] 1) ([0 _] 0) ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k This makes defining functions fairly close to what you're used from Haskell. [1]https://github.com/dcolthorp/matchure Christian On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Hi! Is there any way to define function with pattern matching in function signature as it is in haskell? Bye! -- 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 -- 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: pattern matching in clojure
Thanks! On Sep 30, 11:33 am, Ambrose Bonnaire-Sergeant abonnaireserge...@gmail.com wrote: I've opened an issue concerning this bug: http://dev.clojure.org/jira/browse/MATCH-21 Ambrose On Fri, Sep 30, 2011 at 5:04 PM, Ambrose Bonnaire-Sergeant abonnaireserge...@gmail.com wrote: There's a problem with destructuring lists (seems like a bug). If stack is always a vector, it works. (defn rpn' [ stack symb ] (match [stack symb] [ [x y z ] * ] (apply vector (* x y ) z) [ [x y z ] + ] (apply vector (+ x y ) z) [ x sum ] [ (reduce + x) ] [ x y ] (apply vector (read-string y) x) )) (defn calculator'[ input ] (first (reduce rpn' [] (re-seq #\S+ input (calculator' 1 2 10 2 3 + * sum ) ;= 53 core.match isn't well road tested yet, still early days. Thanks! Ambrose On Fri, Sep 30, 2011 at 4:36 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Thanks for feedback. But now I'm came across a problem. I'm studying Learn You a Haskell for Great Good! and I'm on chapter Functionally Solving Problems reading Reverse Polish notation calculator. I wanted to write it in Clojure. So instead of: http://pastebin.com/QzhbyD6d I wrote:http://pastebin.com/fsChN96D But as you can see the first try doesn't work as expected. The destruction of stack doesn't work as expected. Expectation is written below as let expression. Anyone? On Sep 30, 6:56 am, Kevin Downey redc...@gmail.com wrote: Last I checked matchjure generates fns which break recur (there is an issue open for it). Trading recursion for matching seems like a bad deal, I recommend using match instead. On Sep 29, 2011 4:32 AM, Christian Pohlmann chr.pohlm...@googlemail.com wrote: Additionally to core.match there is also matchure [1] which comes with a defn-match that can be used like this: (defn-match choose ([_ 0] 1) ([0 _] 0) ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k This makes defining functions fairly close to what you're used from Haskell. [1]https://github.com/dcolthorp/matchure Christian On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Hi! Is there any way to define function with pattern matching in function signature as it is in haskell? Bye! -- 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 -- 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: pattern matching in clojure
This probably won't get fixed unless someone does a really good job of convincing me otherwise. Vector notation is reserved for things which support random access. (defn rpn' [ stack symb ] (match [stack symb] [([x y z] :seq) * ] (apply vector (* x y ) z) [([x y z] :seq) + ] (apply vector (+ x y ) z) [x sum ] [ (reduce + x) ] [x y ] (apply vector (read-string y) x) )) Should work just fine. The one approach I might be open to is a variant of match that interprets vector notation as seq notation: (matchs [...] ...) or perhaps (matchv :seq [...] ...) David On Fri, Sep 30, 2011 at 5:04 AM, Ambrose Bonnaire-Sergeant abonnaireserge...@gmail.com wrote: There's a problem with destructuring lists (seems like a bug). If stack is always a vector, it works. (defn rpn' [ stack symb ] (match [stack symb] [ [x y z ] * ] (apply vector (* x y ) z) [ [x y z ] + ] (apply vector (+ x y ) z) [ x sum ] [ (reduce + x) ] [ x y ] (apply vector (read-string y) x) )) (defn calculator'[ input ] (first (reduce rpn' [] (re-seq #\S+ input (calculator' 1 2 10 2 3 + * sum ) ;= 53 core.match isn't well road tested yet, still early days. Thanks! Ambrose On Fri, Sep 30, 2011 at 4:36 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Thanks for feedback. But now I'm came across a problem. I'm studying Learn You a Haskell for Great Good! and I'm on chapter Functionally Solving Problems reading Reverse Polish notation calculator. I wanted to write it in Clojure. So instead of: http://pastebin.com/QzhbyD6d I wrote: http://pastebin.com/fsChN96D But as you can see the first try doesn't work as expected. The destruction of stack doesn't work as expected. Expectation is written below as let expression. Anyone? On Sep 30, 6:56 am, Kevin Downey redc...@gmail.com wrote: Last I checked matchjure generates fns which break recur (there is an issue open for it). Trading recursion for matching seems like a bad deal, I recommend using match instead. On Sep 29, 2011 4:32 AM, Christian Pohlmann chr.pohlm...@googlemail.com wrote: Additionally to core.match there is also matchure [1] which comes with a defn-match that can be used like this: (defn-match choose ([_ 0] 1) ([0 _] 0) ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k This makes defining functions fairly close to what you're used from Haskell. [1]https://github.com/dcolthorp/matchure Christian On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka michael.ja...@googlemail.com wrote: Hi! Is there any way to define function with pattern matching in function signature as it is in haskell? Bye! -- 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 -- 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
Thoughts on a polyglot app server?
The TorqueBox[1] team is toying with the idea of exposing to Clojure the abstractions we currently expose to Ruby. We're looking for feedback from you guys to see what you use now to solve these problems, what you'd like to see in a possible Clojure App Server, and if you might actually use it. If you're not familiar with TorqueBox: it's an application server for Ruby apps, allowing you to run them on top of JBossAS[2]. But it goes to great lengths to preserve the typical Ruby development experience, e.g. no war files or XML. In addition, it provides the following enterprisey features to Ruby, built-in: * asynchronous processing (with futures) * scheduled jobs * XA transactions * companion services (daemons) * distributed caching * messaging (via JMS) Coming from a Ruby background, all of the above were pain points for us. Do these same pain points exist for Clojure apps? TorqueBox also supports clustering, which allows load balancing of the web component as well as cache distribution and horizontal scaling of async tasks, scheduled jobs, and services. Clojure has built in async processing and futures, but they use an in VM thread pool, correct? How would you scale that? A common TorqueBox idiom is to leverage Ruby in the web tier and Java in the services/data tier. Are there any Ring-based frameworks that make Clojure more appealing than Ruby in the web tier? Or does integrating a Ruby web app with a colocated Clojure service make more sense? It should be fairly easy to loosely couple them via messaging. Speaking of which, if you are using Clojure to process data generated by other apps/languages, how is that data communicated? Would language agnostic messaging be useful here? How do you currently run production code (web apps or otherwise)? We'd love to open a dialog about these and other things. Any feedback you care to share is appreciated, either here, or in #torquebox on Freenode. Toby Crawley and I will be in Raleigh for Clojure/conj as well, so we look forward to meeting you there! Thanks! [1]: http://torquebox.org/ [2]: http://www.jboss.org/jbossas -- 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
strangeloop presentations
hi clojure-users, i ploughed through this year's strangeloop presentations today ... 3 presentations that i can recommend for clojure-users: - Jim Duey EasyMonads (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Duey-MonadsEasy.pdf - David Nolen The Mapping Dilemma (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Nolen-MappingDilemma.pdf - Stuart Sierra Introduction to Clojure (intro level) https://github.com/strangeloop/2011-slides/blob/master/Sierra-ClojureIntro.pdf well there may be more for you ... take a look ! gruesse -- 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
Midje Integration for Cascalog
Hey all, I've just released a blog post on how to test Cascalog queries with Midjehttp://sritchie.github.com/2011/09/30/testing-cascalog-with-midje.html; big thanks to Brian Marick for providing such a killer testing framework. Thanks to Clojure and tools like midje-cascaloghttps://github.com/sritchie/midje-cascalog , Cascalog's https://github.com/nathanmarz/cascalog testing suite now dominates anything else in the MapReduce world. I hope anyone working with Hadoop will read this and consider giving Cascalog a try! Cheers, -- Sam Ritchie, Twitter Inc 703.662.1337 @sritchie09 -- 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: Using Clojure to Generate Java Source?
Thanks for the advice and support everyone! I'm not hopeful at being able to sway him to a parenthetical language through logic (I've tried!) Additionally, I definitely would not consider throwing out unmaintainable decompiled Java code on the sly. That, as Nicolas pointed out, would be the ticket to finding a new place of employment. :) I'll try and make the case with him and our mutual boss for letting me work with interop until we get some time to re-develop a pure-Java solution. I don't expect the pace of development to slow down and perhaps proximity to elegance will make an impression. I have to respect that it's his project, but I definitely cringing at re-developing this thing imperatively. -- 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: strangeloop presentations
Do you know if videos will be available? On Friday, September 30, 2011, faenvie fanny.aen...@gmx.de wrote: hi clojure-users, i ploughed through this year's strangeloop presentations today ... 3 presentations that i can recommend for clojure-users: - Jim Duey EasyMonads (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Duey-MonadsEasy.pdf - David Nolen The Mapping Dilemma (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Nolen-MappingDilemma.pdf - Stuart Sierra Introduction to Clojure (intro level) https://github.com/strangeloop/2011-slides/blob/master/Sierra-ClojureIntro.pdf well there may be more for you ... take a look ! gruesse -- 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: strangeloop presentations
In the past they've been posted on infoq.com several months later. Scott On Fri, Sep 30, 2011 at 1:24 PM, Felix Filozov ffilo...@gmail.com wrote: Do you know if videos will be available? On Friday, September 30, 2011, faenvie fanny.aen...@gmx.de wrote: hi clojure-users, i ploughed through this year's strangeloop presentations today ... 3 presentations that i can recommend for clojure-users: - Jim Duey EasyMonads (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Duey-MonadsEasy.pdf - David Nolen The Mapping Dilemma (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Nolen-MappingDilemma.pdf - Stuart Sierra Introduction to Clojure (intro level) https://github.com/strangeloop/2011-slides/blob/master/Sierra-ClojureIntro.pdf well there may be more for you ... take a look ! gruesse -- 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: producing Blub code and vv.
Nice article in the wiki link, the logic rings pretty true for me. Clojure is a truly powerful language and I don't want for any higher-level facilities with it yet. :) That said, it would probably mean great strides in the industry if elegant Clojure code could be translated to comprehensible Java code (or to other languages.) I feel companies use different tools all the time as long as it results in efficient generation of their lingua franca (Java, Python, Ruby, etc.) They switch languages very rarely because it takes a revolution in philosophy to unseat a considerable investment in a particular language. If Clojure could translate itself into other languages the adoption argument would be reduced to getting someone to let you use anther tool to auto-generate boilerplate (the same way IDEs might generate Java getter/setters.) Only this tool would come with lots of parenthesis and a REPL, among other things. ClojureScript being a prime example of Clojure 'speaking' another language. This type of feature is probably only useful as a bridge between now and when everyone in the future talks in reverse polish notation. However, I think comfortable proximity to Clojure's elegance and efficiency would help other developers slowly become acclimated to, and even secretly curious about a new way of thinking. -- 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
unable to resolve symbol: doc
When I do M-x clojure-jack-in on one project.clj which uses clojure 1.2.1, I'm able to evaluate (doc map). But with another project.clj which uses clojure 1.3.0-RC0, the repl is unable to resolve symbol: doc. I also changed it to use clojure 1.3.0, ran lein deps... M-x clojure-jack-in repl user (doc map) ... unable to resolve symbol: doc What do I need to do differently? -- 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: seeking advice for reducing boilerplate
Thanks (both) for the advice! -- 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: unable to resolve symbol: doc
In 1.3 doc was moved to the clojure.repl namespace. So, at the repl, you can: (use 'clojure.repl) and (doc foo) should work again. On Fri, Sep 30, 2011 at 3:12 PM, Andrew ache...@gmail.com wrote: When I do M-x clojure-jack-in on one project.clj which uses clojure 1.2.1, I'm able to evaluate (doc map). But with another project.clj which uses clojure 1.3.0-RC0, the repl is unable to resolve symbol: doc. I also changed it to use clojure 1.3.0, ran lein deps... M-x clojure-jack-in repl user (doc map) ... unable to resolve symbol: doc What do I need to do differently? -- 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: unable to resolve symbol: doc
Oh **that's** what was meant by the blurb below. Thanks.2.26 doc find-doc moved to REPL Adds special form docs to the REPL -- 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: unable to resolve symbol: doc
On Fri, Sep 30, 2011 at 12:12 PM, Andrew ache...@gmail.com wrote: When I do M-x clojure-jack-in on one project.clj which uses clojure 1.2.1, I'm able to evaluate (doc map). But with another project.clj which uses clojure 1.3.0-RC0, the repl is unable to resolve symbol: doc. I also changed it to use clojure 1.3.0, ran lein deps... M-x clojure-jack-in repl user (doc map) ... unable to resolve symbol: doc What do I need to do differently? Try using C-c C-c d instead. I'm not sure what the fix is for doc itself, but this is quite a bit more convenient. -Phil -- 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: unable to resolve symbol: doc
C-c C-d d, right? On Sep 30, 1:38 pm, Phil Hagelberg p...@hagelb.org wrote: On Fri, Sep 30, 2011 at 12:12 PM, Andrew ache...@gmail.com wrote: When I do M-x clojure-jack-in on one project.clj which uses clojure 1.2.1, I'm able to evaluate (doc map). But with another project.clj which uses clojure 1.3.0-RC0, the repl is unable to resolve symbol: doc. I also changed it to use clojure 1.3.0, ran lein deps... M-x clojure-jack-in repl user (doc map) ... unable to resolve symbol: doc What do I need to do differently? Try using C-c C-c d instead. I'm not sure what the fix is for doc itself, but this is quite a bit more convenient. -Phil -- 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: unable to resolve symbol: doc
On Fri, Sep 30, 2011 at 2:13 PM, Alan Malloy a...@malloys.org wrote: C-c C-d d, right? Oops, yes that's right. -Phil -- 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: strangeloop presentations
It was stated at the conference that InfoQ was videoing everything and will post it over the next six months as they get time to edit/produce each session. Sean On Fri, Sep 30, 2011 at 10:41 AM, Scott Jaderholm jaderh...@gmail.com wrote: In the past they've been posted on infoq.com several months later. Scott On Fri, Sep 30, 2011 at 1:24 PM, Felix Filozov ffilo...@gmail.com wrote: Do you know if videos will be available? -- 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: Thoughts on a polyglot app server?
On Thu, Sep 29, 2011 at 13:48, Jim jcrossl...@gmail.com wrote: The TorqueBox[1] team is toying with the idea of exposing to Clojure the abstractions we currently expose to Ruby. We're looking for feedback from you guys to see what you use now to solve these problems, what you'd like to see in a possible Clojure App Server, and if you might actually use it. Well, we would be seriously interested in it at Puppet Labs. At the moment we have a pile of Ruby code, and are using Clojure in some newer parts of the overall project. The move toward Clojure is motivated by the scale and especially parallel operation benefits that it brings to the table. The obvious attraction is that TorqueBox would bring an integrated layer below our Ruby and Clojure code; we would have the same services available to both, exposing coherent interfaces between the parts, and would also allow more intimacy around Java interop and cross-language direct calling. In terms of Clojure integration, comments around what we care about: * asynchronous processing (with futures) Ideally we would want something compatible with Clojure futures, but if you offer (eg) bounded thread pools then having compatible syntax would be a win. Right now we can get away with the default unbounded pool size, but the choice would be awesome. * scheduled jobs * XA transactions * companion services (daemons) Being able to bring these up in Clojure also would be awesome. * distributed caching External memcache compatibility would be a big win here, for us right now, but isn't long term essential. * messaging (via JMS) We currently use ActiveMQ to provide STOMP services for MCollective, and for some internal queue needs. AMQP/JMS messaging would be valuable, especially if it can interoperate with ActiveMQ, or supports easy broker clustering, but not essential. Access to configuring those things from Clojure would be valuable. On the client side we use clamq (https://github.com/sbtourist/clamq) to wrap up interactions with the queue service; having that, or something with similar abstractions, would be valuable. We especially like the model of a queue consumer as an infinite lazy sequence. In addition to those features, having a working and supported Ring adapter free as part of the distribution would be of great value. That is approximately the Ruby Rack feature, and means we can drop whatever front-end we want in place. I have not looked at JBossAS, but having a pleasant way to cooperate with lein project descriptions, or support an uber{war,jar} for getting our application in place, would be awesome. Coming from a Ruby background, all of the above were pain points for us. Do these same pain points exist for Clojure apps? Aside from futures, all of those have been, or are, pain points for us getting bootstrapped in our Clojure project. TorqueBox also supports clustering, which allows load balancing of the web component as well as cache distribution and horizontal scaling of async tasks, scheduled jobs, and services. Clojure has built in async processing and futures, but they use an in VM thread pool, correct? How would you scale that? More or less the same way, as near as I can tell. A common TorqueBox idiom is to leverage Ruby in the web tier and Java in the services/data tier. Are there any Ring-based frameworks that make Clojure more appealing than Ruby in the web tier? From our point of view, Clothesline is an Erlang WebMachine clone and has been awesome for getting our RESTful service working nicely. It decomposes the process of correct HTTP request handling effectively. For strictly user-facing design we are mostly interested in richer client side code, so having something focused more on good API than on easy click-refresh page design makes that kind of moot. Or does integrating a Ruby web app with a colocated Clojure service make more sense? It should be fairly easy to loosely couple them via messaging. We expect to be doing both of those things over the next year or so. Speaking of which, if you are using Clojure to process data generated by other apps/languages, how is that data communicated? Would language agnostic messaging be useful here? We encode to JSON, which is sufficiently rich, as well as sufficiently feature poor, that it hits a good balance. We can express and document interfaces well between components around those basic structures, and that in turn makes it easy to get interoperability and third party developer support built in effectively. From where we sit the three things that would be convenient are: 1. REST API for messaging which accepts JSON. (I see HornetQ delivers :) 2. Built in JSON encoding and decoding in the message queue wrapper. 3. Clojure multimethod-like dispatch on messages. For 3, right now we have a structure { command: some name here, ... }, and dispatch on that top level command key (and, possible, a version tag) to our top level handler. Being able
[ANN] Scripturian R304 released, with support for Clojure 1.3.0
Scripturian is a scalable alternative to JSR-223, providing a clear threading model for embedding JVM languages into high-concurrency applications: http://threecrickets.com/scripturian/ Note that this also brings Clojure 1.3.0 support to Prudence. It already exists on trunk, and you can build it from there. Otherwise, wait patiently for the next minor release of Prudence, which should be in coming weeks. -- 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: strangeloop presentations
Yes, we are working on getting them published. Rich Hickey's keynote is in the first batch and has already been edited, just waiting to be synced to slides and scheduled at InfoQ. Stuart's slides were from a workshop (Aaaron Bedra also did one) and those were 3 hrs and not filmed, so they will not be available. Jim Duey did a similar talk at CodePalousa this year and the video for that version is available if you need it to tide you over. :) http://www.infoq.com/presentations/Monads-Made-Easy Some other Clojure talks from Strange Loop (all will have videos): - Zach Tellman - Event-Driven Programming in Clojure - Nate Young - Parser Combinators: How to Parse (nearly) Anything - Nathan Marz - Storm: Twitter's scalable realtime computation system On Sep 30, 12:24 pm, Felix Filozov ffilo...@gmail.com wrote: Do you know if videos will be available? On Friday, September 30, 2011, faenvie fanny.aen...@gmx.de wrote: hi clojure-users, i ploughed through this year's strangeloop presentations today ... 3 presentations that i can recommend for clojure-users: - Jim Duey EasyMonads (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Duey-MonadsEas... - David Nolen The Mapping Dilemma (advanced level) https://github.com/strangeloop/2011-slides/blob/master/Nolen-MappingD... - Stuart Sierra Introduction to Clojure (intro level) https://github.com/strangeloop/2011-slides/blob/master/Sierra-Clojure... well there may be more for you ... take a look ! gruesse -- 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: suggestion for clojure development
So what's the plan for the future? Are there plans to make clojure stable at some point so that backward compatibility can be expected? Otherwise I am going to have difficulty continuing to advocate clojure to my colleagues. In other words, when will the library ecosystem be considered important enough not to break? A key benefit of the move to modular contrib libraries is to prevent having library ecosystem == monolithic hairball. I think a statement of the policies of the Clojure/Core team (perhaps spelled out on the website) concerning stability and backward compatibility would really help those of us who want to be able to rely on Clojure. The objective is the kind of stability seen across 1.0, 1.1, and 1.2. I am aware of nothing on the horizon like the numerics change, but if something important enough comes along, a decision will be made. Stuart Halloway Clojure/core http://clojure.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