Re: [$Bounty] Emacs plugin for Typed Clojure
Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comjavascript: wrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lou.wal...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comjavascript: wrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure-emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: cond- variant?
I wrote pred-cond for Midje way back, which does what you want. https://github.com/marick/Midje/blob/master/src/midje/clojure/core.clj#L176 Example use: https://github.com/marick/Midje/blob/master/src/midje/parsing/1_to_explicit_form/facts.clj#L100 Like normal cond pred-cond will short-circuit once it hits a match (so unlike con-) On Tue, Feb 11, 2014 at 11:36 PM, s...@corfield.org wrote: I use cond- quite a lot but I find myself often wanting a version that uses predicate functions rather than expressions which would seem more “threaded”. Am I just missing a better way to write these things? For example: (cond- accounts (empty? accounts) (conj “stuff”)) That just screams for something like: (condp- accounts empty? (conj “stuff”)) Then you could thread the predicates: (condp- a p1 (f1 args) p2 (f2 args)) which would be: (let [x (if (p1 a) (f1 a args) a)] (if (p2 x) (f2 x args) x)) Suggestions? Sean Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org World Singles, LLC - http://worldsingles.com -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ISeq documentation and mutual deftypes.
Clearly they are useful as SPI. But I'd argue they are also API-relevant: if you get hold of a Clojure var through the Java API and invoke it via IFn, then these interfaces are pretty useful to help you construct parameters and deal with return values. They are not completely essential (since you can also do this through the core API) but still very handy. Not a big deal I guess, but I do like the ability to use the Clojure data structure interfaces from Java. On Wednesday, 12 February 2014 12:32:29 UTC+8, Alex Miller wrote: IFn (along with the new clojure.java.api.Clojure class) are the totality of the official Java API for Clojure. I would consider some of the other interfaces you mention to effectively be SPI (along with trait interfaces like Counted, Seqable, Indexed, etc). If something were going to be added to clojure.org, I think it would be along the lines of how to write new impls (not just collections but sequences, functions, whatever) that can conform to the same expectations as built-in objects. On Tuesday, February 11, 2014 9:07:16 PM UTC-6, Mikera wrote: This is useful information - thanks Alex! Might be worth putting some of this on a Clojure.org page somewhere, perhaps linked to the Java interop section? As someone who quite regularly interfaces to Clojure from Java, it would be useful to make *some* of the interfaces into an official public Java API. The ones I'm thinking of in particular are: IFn ISeq ILookup IPersistentMap IPersistentVector IPersistentList IPersistentCollection IMeta IObj (for metadata updates) Together these give just enough API surface area to efficiently navigate Clojure data structures, which is pretty crucial for interop.. It might be a good implementation option to put the public parts of these interfaces in the clojure.java.api package, and have the internal Clojure interfaces / classes in clojure.lang inherit from these. On Wednesday, 12 February 2014 08:11:18 UTC+8, Alex Miller wrote: I'd say there is a range of public-ness to the internals of Clojure. - The new Clojure API (clojure.java.api.Clojure) is an official public API for external callers of Clojure. This API basically consists of ways to resolve vars and invoke functions. - For Clojure users in Clojure, pretty much any var that's public and has a docstring, and shows up in the api docs can be considered public API. - Clojure vars that are private or have no docstring (such that the var is omitted from public api docs) are likely places to tread very carefully. - The Clojure internal Java interfaces are certainly intended to allow library builders to create useful stuff that plays in the Clojure world. I do not know that anyone has ever said that they are public, but I certainly think that any change to a core interface likely to break external users would be considered very carefully. - The Clojure internal Java classes should in most cases be considered private and subject to change without notice. There are grey areas even there. In general, we do not place a high value on encapsulation or hiding internals. In most cases, the internals are left available if they might be useful to an advanced user doing interesting things, with the caveat that the weirder things you do, the more likely you are to be accidentally broken in a future release. Re documentation, I personally would like to have more around the Java interfaces, but I don't know whether that will happen. I think 80% of the interfaces are pretty obvious but admittedly that last 20% can take a while to ferret out. I'm happy to answer questions as I see them on the list. On Tuesday, February 11, 2014 5:02:16 PM UTC-6, John Hume wrote: On Tue, Feb 11, 2014 at 7:32 AM, Phillip Lord philli...@newcastle.ac.uk wrote: John D. Hume duelin@gmail.com writes: Other than the new (and quite minimal) Java API for calling Clojure code[1], the details of Clojure's underlying Java classes are considered implementation details and could change from release to release without being considered a breaking change. And the interfaces? I mean, ISeq is defines the sequence abstraction. When I said underlying java classes I meant underlying Java classes and interfaces. Although there are contrib and third party libraries that depend on these implementation details, I think the message to the community at large has always been not to depend on them, and as far as I know, the maintainers have not committed to keeping anything other than the newly documented Java API and the existing Clojure API in Clojure stable. So if I'm not mistaken, in spite of the fact that you can find many examples of people doing it, there is no blessed way to create custom Clojure data structures (unless you count defrecord) and no official documentation to encourage or assist you. Hopefully I am mistaken, or this will change
Re: ISeq documentation and mutual deftypes.
Mikera mike.r.anderson...@gmail.com writes: This is useful information - thanks Alex! Might be worth putting some of this on a Clojure.org page somewhere, perhaps linked to the Java interop section? As someone who quite regularly interfaces to Clojure from Java, it would be useful to make *some* of the interfaces into an official public Java API. The ones I'm thinking of in particular are: IFn ISeq ILookup IPersistentMap IPersistentVector IPersistentList IPersistentCollection IMeta IObj (for metadata updates) Together these give just enough API surface area to efficiently navigate Clojure data structures, which is pretty crucial for interop.. I'm not sure this is just an interop issue. As the website says: Clojure is written in terms of abstractions. There are abstractions for sequences, collections, callability, etc. In addition, Clojure supplies many implementations of these abstractions. The abstractions are specified by host interfaces, and the implementations by host classes. For these abstractions to be useful, they must be usable in client code. Otherwise, they are an implementation detail. I guess, in the abstract (oops), the problem is that ISeq is a Java interface, when really it should be a protocol, i.e. defined in Clojure. In the meantime, documentation would be good! 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 --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ISeq documentation and mutual deftypes.
Brandon Bloom brandon.d.bl...@gmail.com writes: The closest I have got it: (declare create-alice) (declare create-brian) Yup, that's A-OK. You can also just write (declare create-alice create-brian). The tricky bit comes in when you actually need to refer to the types by name directly. Say, if you wanted to create mutually recursive deftypes with type hints (maybe for host interop reasons). In that case, you can indirect through interfaces/protocols: (defprotocol IFoo ...) (defprotocol IBar ...) (deftype Foo [^IBar bar] ...) (deftype Bar [^IFoo foo] ...) If you genuinely need mutually recursive types and can't indirect through protocols (or interfaces), then you probably have a particular JVM interop use case and should just write Java for that purpose. Thank you, this is a very good answer! 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 --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
Hi John, I gave it a whirl, it's exactly what I wanted. When you're ready please claim the bounty. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:46 PM, john walker john.lou.wal...@gmail.comwrote: Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure-emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from
Re: OT: Enterprise Schedulers
Hi Luca Thanks for the links! I definitely have a lot of hammock time ahead of me :-) Cheers Adrian On 11 Feb 2014, at 14:37, icamts wrote: Hi Adrian, the answer is more off-topic than the question :) but have a look to Spagic (I'm a member of the developers' team), Mule ESB, Petals ESB or Talend ESB. You may already know Talend as an ETL solution. You'll find tools to define, configure and run instances of services or processes. Monitong application with re-start / re-run facilities. Connectors for services / processes integration. In a ESB scenario developers will design simple processes with a quartz or file polling connector followed by a script / custom component designed to accomplist the batch task. Custom components can be written in clojure if you reify the required interface. The only cavevat is the AOT compilation. Some other ideas are below, along your problem statement. Cheers, Luca Be controlled by artifacts developers control Probably be github friendly Put service deployment directory and estensions / plugins directory under version control and copy them as a part of the deployment process. An ESB can be deployed like a simple webapp. Provide a direct relationship between an application and its tasks Choose meaningful service names. Deploy a local ESB in the same AS of your application and use an in-memory invoker / connector. Support separate sandbox, staging and production environments Use different ESB instances. Be scalable Single task scalability is up to your code. Be distributed - jobs for application X can run on the same host as application X or on a different host or cluster as needed Sevices / processes can be run on every ESB instance. Use in-memory invoker / connector or soap invoker / connector. Be secure Use https for remote connection. Use sftp for file transfer. Be easy to administer Job progress and status is visible Service progress notification is up to your code and not a monitor console feature. Process running step is available. Alert when a job fails Use a mail connector to alert on job fails Easy to re-run a job Restart / rerun through monitoring console. Easy to spin up new hosts and/or move all processing to a different host Deploy a new instance with the same configuration. No running service can be moved. Running processes may be moved. It depends on workflow engine implementation details. Provide a standard way of organising assets like files and configs across all our applications (Not sure what you mean.) Comply with our hybrid infrastructure (stuff runs internally and in the cloud) Data can move internal - cloud Is it an ETL task? Data can move cloud - internal Same as before Data can be processed entirely within a host That's so Support different ways of triggering a job Scheduled tasks Use a quartz input connector Run when file x arrives Use a file poller input connector Run job y after job x completes Use an output connector to trigger the next job start or design a process with jobs in a sequence. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/95W4MlkFgnY/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. Adrian Mowat Tweet: @mowat27 Am I being a bit short? Here's why: http://emailcharter.org/, http://inboxzero.com/ -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
On Friday, February 7, 2014 2:23:33 AM UTC, Sean Corfield wrote: On Feb 6, 2014, at 12:58 PM, Stuart Sierra the.stua...@gmail.comjavascript: wrote: I think (reduce + (range N)) is commonly used in **examples**, not necessarily in real applications. I'd have to agree: I don't see anything like that in our 20kloc at World Singles. I see a handful of (reduce + data) for arbitrary series of data values. On a slightly different topic: why reduce and not apply? user= (time (reduce + (range 1000))) Elapsed time: 402.17 msecs 499500 user= (time (apply + (range 1000))) Elapsed time: 361.099043 msecs 499500 Sean Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ Perfection is the enemy of the good. -- Gustave Flaubert, French realist novelist (1821-1880) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
On Wednesday, February 12, 2014 8:46:41 AM UTC-5, Vincent wrote: On a slightly different topic: why reduce and not apply? The implementation of `+` with more than 2 arguments uses `reduce` internally. So they amount to the same thing. There isn't really a performance difference: user= (dotimes [i 7] (time (reduce + (range 1000 Elapsed time: 354.475 msecs Elapsed time: 346.235 msecs Elapsed time: 348.124 msecs Elapsed time: 348.894 msecs Elapsed time: 379.9 msecs Elapsed time: 356.337 msecs Elapsed time: 362.788 msecs nil user= (dotimes [i 7] (time (apply + (range 1000 Elapsed time: 360.067 msecs Elapsed time: 353.281 msecs Elapsed time: 345.694 msecs Elapsed time: 355.162 msecs Elapsed time: 346.511 msecs Elapsed time: 350.61 msecs Elapsed time: 353.674 msecs nil -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
OK, thanks! I realigned the repository name / filename / modename to be both more correct and compliant with your fork. My version can now be seen here: https://github.com/johnwalker/typed-clojure-mode I didn't immediately see how to claim a bounty, but I see that the issue has to be marked as resolved first. I'm going to send in a CA tonight too, since I was planning on trying gsoc anyway. On Wednesday, February 12, 2014 6:44:08 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I gave it a whirl, it's exactly what I wanted. When you're ready please claim the bounty. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:46 PM, john walker john.lo...@gmail.comjavascript: wrote: Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure-emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: [$Bounty] Emacs plugin for Typed Clojure
I guess it takes awhile to propagate to BountySource. Did you have any projects in mind for GSoC? Perhaps more Typed Clojure work? Thanks, Ambrose On Wed, Feb 12, 2014 at 11:32 PM, john walker john.lou.wal...@gmail.comwrote: OK, thanks! I realigned the repository name / filename / modename to be both more correct and compliant with your fork. My version can now be seen here: https://github.com/johnwalker/typed-clojure-mode I didn't immediately see how to claim a bounty, but I see that the issue has to be marked as resolved first. I'm going to send in a CA tonight too, since I was planning on trying gsoc anyway. On Wednesday, February 12, 2014 6:44:08 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I gave it a whirl, it's exactly what I wanted. When you're ready please claim the bounty. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:46 PM, john walker john.lo...@gmail.comwrote: Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure- emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first
Re: [$Bounty] Emacs plugin for Typed Clojure
Hi John it would be nice to add the ;;;###autoload cookie for minor-mode definition... On Wed, Feb 12, 2014 at 4:32 PM, john walker john.lou.wal...@gmail.comwrote: OK, thanks! I realigned the repository name / filename / modename to be both more correct and compliant with your fork. My version can now be seen here: https://github.com/johnwalker/typed-clojure-mode I didn't immediately see how to claim a bounty, but I see that the issue has to be marked as resolved first. I'm going to send in a CA tonight too, since I was planning on trying gsoc anyway. On Wednesday, February 12, 2014 6:44:08 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I gave it a whirl, it's exactly what I wanted. When you're ready please claim the bounty. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:46 PM, john walker john.lo...@gmail.comwrote: Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure- emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to
Re: meta circular clojure
2014-02-12 5:18 GMT+01:00 t x txrev...@gmail.com: If no such evaluator exists, where is the complexity of a clojure-in-clojure evaluator that I failed to mention above? Clojure is a compiled language. This means that even if you leave out any platform issues like bytecode generation, there is still an analysis phase separate from evaluation. The most visible effect of this in terms of language semantics is, that every name in a given piece of code has to be fully resolved (to a lexical binding, a namespace var or a class) when it is analyzed/compiled, before evaluation can begin. Thus the need for declare in case of circular call graphs. That's not to say that a clojure analyzer and interpreter couldn't fit on 2-3 pages of code (depending on your page size and choice of font :-). I believe the CLJS analyzer isn't that much larger (or used not to be, anyway). cheers -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
Thanks Alex, I've added this. On Wednesday, February 12, 2014 10:39:49 AM UTC-5, Alex Ott wrote: Hi John it would be nice to add the ;;;###autoload cookie for minor-mode definition... On Wed, Feb 12, 2014 at 4:32 PM, john walker john.lo...@gmail.comjavascript: wrote: OK, thanks! I realigned the repository name / filename / modename to be both more correct and compliant with your fork. My version can now be seen here: https://github.com/johnwalker/typed-clojure-mode I didn't immediately see how to claim a bounty, but I see that the issue has to be marked as resolved first. I'm going to send in a CA tonight too, since I was planning on trying gsoc anyway. On Wednesday, February 12, 2014 6:44:08 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I gave it a whirl, it's exactly what I wanted. When you're ready please claim the bounty. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:46 PM, john walker john.lo...@gmail.comwrote: Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure- emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to
Keyword equality check
Hi, I wonder how is equality of keywords implemented in Clojure? I have this piece of Java code executed in one classloader: Keyword a = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); Then, when I pass it to another part of my application (which uses another classloader) and do this: Keyword b = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); assert a == b; Assertion passes. Why does it work? If I'm correct, keywords are interned, but since they were created in separate classloaders shouldn't that assert fail? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Keyword equality check
Interning table uses keyword's symbol as a key, and the symbols are compared by value. See https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Keyword.java#L37 On Wed, Feb 12, 2014 at 5:23 PM, Arkadiusz Komarzewski akomarzew...@gmail.com wrote: Hi, I wonder how is equality of keywords implemented in Clojure? I have this piece of Java code executed in one classloader: Keyword a = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); Then, when I pass it to another part of my application (which uses another classloader) and do this: Keyword b = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); assert a == b; Assertion passes. Why does it work? If I'm correct, keywords are interned, but since they were created in separate classloaders shouldn't that assert fail? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [$Bounty] Emacs plugin for Typed Clojure
I don't actually know yet. I have an idea that I'll submit ~Saturday that could be pretty cool. On Wednesday, February 12, 2014 10:37:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: I guess it takes awhile to propagate to BountySource. Did you have any projects in mind for GSoC? Perhaps more Typed Clojure work? Thanks, Ambrose On Wed, Feb 12, 2014 at 11:32 PM, john walker john.lo...@gmail.comjavascript: wrote: OK, thanks! I realigned the repository name / filename / modename to be both more correct and compliant with your fork. My version can now be seen here: https://github.com/johnwalker/typed-clojure-mode I didn't immediately see how to claim a bounty, but I see that the issue has to be marked as resolved first. I'm going to send in a CA tonight too, since I was planning on trying gsoc anyway. On Wednesday, February 12, 2014 6:44:08 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I gave it a whirl, it's exactly what I wanted. When you're ready please claim the bounty. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:46 PM, john walker john.lo...@gmail.comwrote: Well, that was easy to find. It will be fixed in the next version of clojure mode. If you are impatient, do C-h f clojure-match-next-def, click on clojure-mode.el and replace the line (when (re-search-backward ^(def\sw* nil t) with (when (re-search-backward ^(def\\sw* nil t) then recompile your clojure-mode.el. This probably will not exist after the February 1st snapshot. Source: https://github.com/clojure- emacs/clojure-mode/commit/32feee877233a4d98fb934dcbd42789e56dac790 On Wednesday, February 12, 2014 3:24:12 AM UTC-5, john walker wrote: Added. The next big thing I see is fixing which-function. On Wednesday, February 12, 2014 3:07:44 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, I don't mind that ns-aliases can go out of date. Please use the output of ns-alias as authoritative, and make a documentation note of this quirk. Thanks, Ambrose On Wed, Feb 12, 2014 at 4:03 PM, john walker john.lo...@gmail.comwrote: Ahh, this turned out to be fairly interesting. My first thought was to check the aliases using (ns-alias), but it turns out that re-evaluating a namespace after removing the alias leaves the original aliases in place. So I'm just going to use a regex, which is probably easier anyway. On Wednesday, February 12, 2014 2:29:31 AM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi John, Wow! One thing, if clojure.core.typed is aliases in the current namespace, then the ann* refactor should use that alias. If there is no alias, then use the fully qualified namespace. If the var is referred into the current ns-map, then use the fully qualified namespace or a namespace alias prefix if available. Thanks, Ambrose On Wed, Feb 12, 2014 at 3:18 PM, john walker john.lo...@gmail.comwrote: I'm still on my first cup, so let me know what you think: https://github.com/johnwalker/typed-clojure-el On Tuesday, February 11, 2014 12:01:36 PM UTC-5, Ambrose Bonnaire-Sergeant wrote: Hi, I need a relatively straightforward Emacs plugin for Typed Clojure written. I'm offering a $200US bounty. If you would also like to see this, please bump up the $$. If you're interested in claiming, see the bounty pagehttps://www.bountysource.com/issues/1406536-emacs-plugin-for-typed-clojure and the Jira issue http://dev.clojure.org/jira/browse/CTYP-103 for a brief description. Please comment or email me if you are interested. Thanks, Ambrose -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: meta circular clojure
2014-02-12 5:36 GMT+01:00 Di Xu xudi...@gmail.com: all lisp dialect provide `read` function, so if you want to build an evaluator, you could just use this function and don't need to do lexical and syntax analysis. Maybe your understanding of these terms is different from mine, in my view: A lisp evaluator needs to do syntactic and lexical analysis. Those are both performed after the data structures have been parsed by `read` and then macroexpanded by the compiler. Macroexpansion could be considered part of syntactic analysis for most macros. Read doesn't do any analysis at all. Usually it's completely independent from language semantics. In clojure, there is a slight complexion in the form of syntax-quote (`) which uses the compilation environment to determine symbol namespaces. # Example ;; this is the primitive let* form, to which let macroexpands (let* [a (init a b c)] (process a)) Both kinds of analyses (syntactic, lexical) have to be done by every compiler or evaluator at some point. Compilers tend to do it during compile time. ## Syntactic Analysis: Here syntax analysis mandates that the second parameter is a literal vector with (mod ... 2) elements and a symbol w.o. namespace as every second element. If this condition is not met, the compiler can and should fail with a syntax error ## Lexical Analysis: Lexical analysis will try to resolve the names `init`, `process`, `b`, `c` to either their innermost lexical bindings or namespace vars or refers. The outer `a` that `init` is called with, is also resolved to an outside binding. The inner `a` (argument to `process`) is always bound to it's (lexical) rebinding in the let* form. In this phase, unbound-name errors are thrown if the analyzer can't find the origin of a binding. hope someone finds this nitpick useful kind 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 --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Keyword equality check
I'm willing to bet that both classloaders have the same clojure runtime in a common base classloader. i.e. that cl1.loadClass(clojure.lang.RT) == cl2.loadClass(clojure.lang.RT); If the two clojure runtimes were distinct, the assert would indeed fail. Also .equals return false and this assignment would fail: Keyword kw = getKwFromDifferentClassloader(); This would work: Object kw = getKwFromDifferentClassloader(); See here: http://stackoverflow.com/questions/5375349/class-instance-obtained-through-multiple-class-loader For reference: This is a printout of the return value of nrepl/start-server in a completely separated classloader, save for bootstrap classes in the java library (an architecture that I use for my services) {#Keyword :server-socket #ServerSocket ServerSocket[addr= 0.0.0.0/0.0.0.0,localport=4003], #Keyword :port 4003, #Keyword :open-transports #Atom clojure.lang.Atom@77b8bd8, #Keyword :transport #transport$bencode clojure.tools.nrepl.transport$bencode@56be0fb6, #Keyword :greeting nil, #Keyword :handler #middleware$wrap_conj_descriptor$fn__693 clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__693@4608f600, #Keyword :ss #ServerSocket ServerSocket[addr= 0.0.0.0/0.0.0.0,localport=4003]} Notice how the printer prints out the {} correctly, because it dispatches on java.util.Map (a common base class from the bootstrap classloader), but fails to recognize the Keywords of a different clojure runtime. From experiments, I can assure you that (not= :port #Keyword :port) Similarly, assoc on this map would fail, because it's only recognized as a j.u.Map, but not as a c.l.PersistentMap. cheers 2014-02-12 17:45 GMT+01:00 Jozef Wagner jozef.wag...@gmail.com: Interning table uses keyword's symbol as a key, and the symbols are compared by value. See https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Keyword.java#L37 On Wed, Feb 12, 2014 at 5:23 PM, Arkadiusz Komarzewski akomarzew...@gmail.com wrote: Hi, I wonder how is equality of keywords implemented in Clojure? I have this piece of Java code executed in one classloader: Keyword a = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); Then, when I pass it to another part of my application (which uses another classloader) and do this: Keyword b = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); assert a == b; Assertion passes. Why does it work? If I'm correct, keywords are interned, but since they were created in separate classloaders shouldn't that assert fail? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[ANN] zcube 0.0.1
Hi, clojure community. It is my pleasure to announce zcube[1], a Clojure library all about counting trees for analytical purposes. The intent is to compute aggregate sums over multiple hierarchical dimensions, based on the (old) algorithmic ideas exposed in [2] by Pr. Minato et Al, and implemented in an immutable setting suitable for concurrent and functional programming. Feedback welcome, thanks. [1]https://github.com/ftod/zcube [2]http://www-alg.ist.hokudai.ac.jp/~thomas/TCSTR/tcstr_05_3/tcstr_05_3.pdf -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
On Wednesday, February 12, 2014 2:47:07 PM UTC, Stuart Sierra wrote: On Wednesday, February 12, 2014 8:46:41 AM UTC-5, Vincent wrote: On a slightly different topic: why reduce and not apply? The implementation of `+` with more than 2 arguments uses `reduce` internally. So they amount to the same thing. Ah ok, interesting. I do seem to have, in the past, come across a function that was significantly faster when used with apply rather than reduce, but I can't remember which one. There isn't really a performance difference: user= (dotimes [i 7] (time (reduce + (range 1000 Elapsed time: 354.475 msecs Elapsed time: 346.235 msecs Elapsed time: 348.124 msecs Elapsed time: 348.894 msecs Elapsed time: 379.9 msecs Elapsed time: 356.337 msecs Elapsed time: 362.788 msecs nil user= (dotimes [i 7] (time (apply + (range 1000 Elapsed time: 360.067 msecs Elapsed time: 353.281 msecs Elapsed time: 345.694 msecs Elapsed time: 355.162 msecs Elapsed time: 346.511 msecs Elapsed time: 350.61 msecs Elapsed time: 353.674 msecs nil Thanks, Vincent -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
In the olden lisp days, reduce was often preferred to apply because apply could hit limits on the number of arguments that could be passed to a function. Is that a potential issue with clojure? Thanks, John On Wed, Feb 12, 2014 at 12:06 PM, Vincent vhenneb...@gmail.com wrote: On Wednesday, February 12, 2014 2:47:07 PM UTC, Stuart Sierra wrote: On Wednesday, February 12, 2014 8:46:41 AM UTC-5, Vincent wrote: On a slightly different topic: why reduce and not apply? The implementation of `+` with more than 2 arguments uses `reduce` internally. So they amount to the same thing. Ah ok, interesting. I do seem to have, in the past, come across a function that was significantly faster when used with apply rather than reduce, but I can't remember which one. There isn't really a performance difference: user= (dotimes [i 7] (time (reduce + (range 1000 Elapsed time: 354.475 msecs Elapsed time: 346.235 msecs Elapsed time: 348.124 msecs Elapsed time: 348.894 msecs Elapsed time: 379.9 msecs Elapsed time: 356.337 msecs Elapsed time: 362.788 msecs nil user= (dotimes [i 7] (time (apply + (range 1000 Elapsed time: 360.067 msecs Elapsed time: 353.281 msecs Elapsed time: 345.694 msecs Elapsed time: 355.162 msecs Elapsed time: 346.511 msecs Elapsed time: 350.61 msecs Elapsed time: 353.674 msecs nil Thanks, Vincent -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
On Feb 12, 2014, at 5:46 AM, Vincent vhenneb...@gmail.com wrote: On Friday, February 7, 2014 2:23:33 AM UTC, Sean Corfield wrote: On Feb 6, 2014, at 12:58 PM, Stuart Sierra the.stua...@gmail.com wrote: I think (reduce + (range N)) is commonly used in *examples*, not necessarily in real applications. I'd have to agree: I don't see anything like that in our 20kloc at World Singles. I see a handful of (reduce + data) for arbitrary series of data values. On a slightly different topic: why reduce and not apply? Stuart addressed the performance (non-)issue but I think the intent of (reduce + data) is much clearer than (apply + data). To me, apply says I have arbitrary arguments that I've constructed programmatically and now I want to call a function with those arguments whereas reduce says I have a collection and want to apply this function cumulatively across that collection. Sean Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ Perfection is the enemy of the good. -- Gustave Flaubert, French realist novelist (1821-1880) signature.asc Description: Message signed with OpenPGP using GPGMail
Re: cond- variant?
On Feb 12, 2014, at 1:34 AM, Alex Baranosky alexander.barano...@gmail.com wrote: I wrote pred-cond for Midje way back, which does what you want. https://github.com/marick/Midje/blob/master/src/midje/clojure/core.clj#L176 That doesn't appear to thread each expression through the results so it isn't really a variant of cond- but between that and the source of cond- I suspect I will just end up rolling my own... Sean Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ Perfection is the enemy of the good. -- Gustave Flaubert, French realist novelist (1821-1880) signature.asc Description: Message signed with OpenPGP using GPGMail
Re: cond- variant?
Here's what I ended up with - minor variants of cond- and cond- (defmacro condp- Takes an expression and a set of predicate/form pairs. Threads expr (via -) through each form for which the corresponding predicate is true of expr. Note that, unlike cond branching, condp- threading does not short circuit after the first true test expression. [expr clauses] (assert (even? (count clauses))) (let [g (gensym) pstep (fn [[pred step]] `(if (~pred ~g) (- ~g ~step) ~g))] `(let [~g ~expr ~@(interleave (repeat g) (map pstep (partition 2 clauses)))] ~g))) (defmacro condp- Takes an expression and a set of predicate/form pairs. Threads expr (via -) through each form for which the corresponding predicate is true of expr. Note that, unlike cond branching, condp- threading does not short circuit after the first true test expression. [expr clauses] (assert (even? (count clauses))) (let [g (gensym) pstep (fn [[pred step]] `(if (~pred ~g) (- ~g ~step) ~g))] `(let [~g ~expr ~@(interleave (repeat g) (map pstep (partition 2 clauses)))] ~g))) On Feb 12, 2014, at 2:34 PM, Sean Corfield s...@corfield.org wrote: On Feb 12, 2014, at 1:34 AM, Alex Baranosky alexander.barano...@gmail.com wrote: I wrote pred-cond for Midje way back, which does what you want. https://github.com/marick/Midje/blob/master/src/midje/clojure/core.clj#L176 That doesn't appear to thread each expression through the results so it isn't really a variant of cond- but between that and the source of cond- I suspect I will just end up rolling my own... signature.asc Description: Message signed with OpenPGP using GPGMail
Re: range-sum
On Wednesday, February 12, 2014 2:33:34 PM UTC-6, John Wiseman wrote: In the olden lisp days, reduce was often preferred to apply because apply could hit limits on the number of arguments that could be passed to a function. Still an issue with some Common Lisps. I've hit the limit in CLISP and LispWorks, but several other Common Lisps, including my favorite, SBCL, don't seem to have a limit. Is that a potential issue with clojure? (range 1) Then copy its output from the terminal window. (apply + 'paste here ) CompilerException java.lang.ClassFormatError: Invalid method Code length 109957 in class file user$eval1179, compiling:(/private/var/folders/AV/AVc7bySmE4a+vcamS7JSTE+++TQ/-Tmp-/form-init2649824128421176665.clj:1:1) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Keyword equality check
I think it's a little more subtle than that. Symbols are composed of a String name and a String namespace. When symbols are created they intern each of those Strings. Interned Strings are comparable by identity across the JVM. Symbol equals() compares name and namespace. Keyword extends from Symbol and calls into the Symbol interning and inherits the equals() implementation. As Jozef mentions, the Keyword intern table is held in a static map in Keyword and that would not be shared if you had multiple Clojure classloaders. However, I think the Keyword intern table is largely to avoid creating multiple instances of the same Keyword (as well as safely cleaning them up if no one is using them anymore). This is all irrelevant for the equality comparison in the original post. On Wednesday, February 12, 2014 10:45:38 AM UTC-6, Jozef Wagner wrote: Interning table uses keyword's symbol as a key, and the symbols are compared by value. See https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Keyword.java#L37 On Wed, Feb 12, 2014 at 5:23 PM, Arkadiusz Komarzewski akomar...@gmail.com javascript: wrote: Hi, I wonder how is equality of keywords implemented in Clojure? I have this piece of Java code executed in one classloader: Keyword a = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); Then, when I pass it to another part of my application (which uses another classloader) and do this: Keyword b = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); assert a == b; Assertion passes. Why does it work? If I'm correct, keywords are interned, but since they were created in separate classloaders shouldn't that assert fail? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
On Wednesday, February 12, 2014 5:14:42 PM UTC-6, Mars0i wrote: On Wednesday, February 12, 2014 2:33:34 PM UTC-6, John Wiseman wrote: Is that a potential issue with clojure? (range 1) Then copy its output from the terminal window. (apply + 'paste here ) CompilerException java.lang.ClassFormatError: Invalid method Code length 109957 in class file user$eval1179, compiling:(/private/var/folders/AV/AVc7bySmE4a+vcamS7JSTE+++TQ/-Tmp-/form-init2649824128421176665.clj:1:1) But '(reduce +' has the same difficulty. The limit was somewhere between 5000 and 8000 arguments. I can live with that. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Keyword equality check
Reading a little more closely, that's an identity comparison in Java, not an equals comparison in Clojure (who uses Java anyways? :). So I would retract my last statement. The question is really whether the two classloaders are deferring the load of the common class to a parent classloader that loads the same Keyword class. You can ask the Keyword classes you have for their classloader and then look through the parents to investigate that question. On Wednesday, February 12, 2014 5:32:07 PM UTC-6, Alex Miller wrote: I think it's a little more subtle than that. Symbols are composed of a String name and a String namespace. When symbols are created they intern each of those Strings. Interned Strings are comparable by identity across the JVM. Symbol equals() compares name and namespace. Keyword extends from Symbol and calls into the Symbol interning and inherits the equals() implementation. As Jozef mentions, the Keyword intern table is held in a static map in Keyword and that would not be shared if you had multiple Clojure classloaders. However, I think the Keyword intern table is largely to avoid creating multiple instances of the same Keyword (as well as safely cleaning them up if no one is using them anymore). This is all irrelevant for the equality comparison in the original post. On Wednesday, February 12, 2014 10:45:38 AM UTC-6, Jozef Wagner wrote: Interning table uses keyword's symbol as a key, and the symbols are compared by value. See https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Keyword.java#L37 On Wed, Feb 12, 2014 at 5:23 PM, Arkadiusz Komarzewski akomar...@gmail.com wrote: Hi, I wonder how is equality of keywords implemented in Clojure? I have this piece of Java code executed in one classloader: Keyword a = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); Then, when I pass it to another part of my application (which uses another classloader) and do this: Keyword b = (Keyword) RT.var(clojure.core, keyword).invoke(keyword); assert a == b; Assertion passes. Why does it work? If I'm correct, keywords are interned, but since they were created in separate classloaders shouldn't that assert fail? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
Just to be clear, and to check my understanding, that's not an issue with the number of arguments, right? It's a limit on the size of a literal or something? I ask because (apply + (range 1)) works fine, but maybe I've missed some subtlety. Thanks, John On Wed, Feb 12, 2014 at 3:32 PM, Mars0i marsh...@logical.net wrote: On Wednesday, February 12, 2014 5:14:42 PM UTC-6, Mars0i wrote: On Wednesday, February 12, 2014 2:33:34 PM UTC-6, John Wiseman wrote: Is that a potential issue with clojure? (range 1) Then copy its output from the terminal window. (apply + 'paste here ) CompilerException java.lang.ClassFormatError: Invalid method Code length 109957 in class file user$eval1179, compiling:(/private/var/ folders/AV/AVc7bySmE4a+vcamS7JSTE+++TQ/-Tmp-/form- init2649824128421176665.clj:1:1) But '(reduce +' has the same difficulty. The limit was somewhere between 5000 and 8000 arguments. I can live with that. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: range-sum
Good question. I don't know. Maybe it's in the read stage, rather than in evaluating arguments for + ? On Wednesday, February 12, 2014 5:43:18 PM UTC-6, John Wiseman wrote: Just to be clear, and to check my understanding, that's not an issue with the number of arguments, right? It's a limit on the size of a literal or something? I ask because (apply + (range 1)) works fine, but maybe I've missed some subtlety. Thanks, John On Wed, Feb 12, 2014 at 3:32 PM, Mars0i mars...@logical.net javascript: wrote: On Wednesday, February 12, 2014 5:14:42 PM UTC-6, Mars0i wrote: On Wednesday, February 12, 2014 2:33:34 PM UTC-6, John Wiseman wrote: Is that a potential issue with clojure? (range 1) Then copy its output from the terminal window. (apply + 'paste here ) CompilerException java.lang.ClassFormatError: Invalid method Code length 109957 in class file user$eval1179, compiling:(/private/var/ folders/AV/AVc7bySmE4a+vcamS7JSTE+++TQ/-Tmp-/form- init2649824128421176665.clj:1:1) But '(reduce +' has the same difficulty. The limit was somewhere between 5000 and 8000 arguments. I can live with that. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [ANN] zcube 0.0.1
+1 I can already think of a few places I'd like to try this. Looks very cool. Tim Washington Interruptsoftware.com http://interruptsoftware.com On Wed, Feb 12, 2014 at 1:13 PM, Fabien Todescato f...@infologic.fr wrote: Hi, clojure community. It is my pleasure to announce zcube[1], a Clojure library all about counting trees for analytical purposes. The intent is to compute aggregate sums over multiple hierarchical dimensions, based on the (old) algorithmic ideas exposed in [2] by Pr. Minato et Al, and implemented in an immutable setting suitable for concurrent and functional programming. Feedback welcome, thanks. [1]https://github.com/ftod/zcube [2]http://www-alg.ist.hokudai.ac.jp/~thomas/TCSTR/tcstr_05_3/tcstr_05_3.pdf -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.