Re: Is this bug in Google AppEngine, appengine-clj or Clojure itself?
I think it is caused by those 2 clojure bugs (which seem to be the same thing). You may be able to work around that problem by patching appengine-clj to hint the method call to be on the public interface: DatastoreService. (defn current-transaction Returns the current datastore transaction, or nil if not within a transaction. [] (.getCurrentTransaction ^com.google.appengine.api.datastore.DatastoreService (datastore) 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
Re: Improved stack traces
I found when working on ticket 191 (dead now, I suppose) that counting the stack elements is not reliable, but = works to get rid of duplicates. Below you can compare java's to your new function - the clojure has one duplicate element (the very last one). Also, I find the ... useful to know something is cut off. root-cause is too generic of a name since it only strips out CompileException. Will clojure.stacktrace be deprecated or patched to use this implementation? My patch for 191 includes test code if you want to adjust it for this. -Mike user= (.printStackTrace *e) java.lang.Exception: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_FILE:0) at clojure.lang.Compiler.analyze(Compiler.java:5777) at clojure.lang.Compiler.analyze(Compiler.java:5723) at clojure.lang.Compiler.eval(Compiler.java:6002) at clojure.lang.Compiler.eval(Compiler.java:5965) at clojure.core$eval.invokeStatic(core.clj:2652) at clojure.core$eval.invoke(core.clj) at clojure.main$repl$read_eval_print__5766.invoke(main.clj:177) at clojure.main$repl$fn__5771.invoke(main.clj:198) at clojure.main$repl.doInvoke(main.clj:198) at clojure.lang.RestFn.invoke(RestFn.java:422) at clojure.main$repl_opt.invoke(main.clj:256) at clojure.main$main.doInvoke(main.clj:349) at clojure.lang.RestFn.invoke(RestFn.java:398) at clojure.lang.Var.invoke(Var.java:361) at clojure.lang.AFn.applyToHelper(AFn.java:159) at clojure.lang.Var.applyTo(Var.java:482) at clojure.main.main(main.java:37) Caused by: java.lang.Exception: Unable to resolve symbol: x in this context at clojure.lang.Compiler.resolveIn(Compiler.java:6251) at clojure.lang.Compiler.resolve(Compiler.java:6195) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6158) at clojure.lang.Compiler.analyze(Compiler.java:5744) ... 16 more nil user= (pst *e 40) CompilerException java.lang.Exception: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_FILE:0) clojure.lang.Compiler.analyze (Compiler.java:5777) clojure.lang.Compiler.analyze (Compiler.java:5723) clojure.lang.Compiler.eval (Compiler.java:6002) clojure.lang.Compiler.eval (Compiler.java:5965) clojure.core/eval (core.clj:2652) clojure.core/eval (core.clj:-1) clojure.main/repl/read-eval-print--5766 (main.clj:177) clojure.main/repl/fn--5771 (main.clj:198) clojure.main/repl (main.clj:198) clojure.main/repl-opt (main.clj:256) clojure.main/main (main.clj:349) clojure.lang.Var.invoke (Var.java:361) clojure.lang.Var.applyTo (Var.java:482) clojure.main.main (main.java:37) Caused by: Exception Unable to resolve symbol: x in this context clojure.lang.Compiler.resolveIn (Compiler.java:6251) clojure.lang.Compiler.resolve (Compiler.java:6195) clojure.lang.Compiler.analyzeSymbol (Compiler.java:6158) clojure.lang.Compiler.analyze (Compiler.java:5744) clojure.lang.Compiler.analyze (Compiler.java:5723) 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
Re: clojure.contrib.test-contrib.test-jmx build error
I've reported this problem before with openjdk, but sun's jdk works. -Mike On Wed, Jan 27, 2010 at 8:38 AM, Michał Marczyk michal.marc...@gmail.comwrote: I've been getting this unpleasant error building clojure.contrib recently: http://paste.lisp.org/display/94000 I wonder if there's a known issue behind it...? Sincerely, Michal -- 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.comclojure%2bunsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Help needed regarding the let
One of the big features of Clojure is you can't changes variables after they are initialized - in java terms, they are all final. However, when the let exits, the buffer variable is out of scope, so the StringBuilder object can be gc'd if that's what you're concerned about. Inside the let, you can have another let, with a variable even with the same name, but it's really a different variable and only active within that inner scope. Note, = is a function that tests equality, like == or .equals() in java, it's not assignment. If you explain more about what you want to do, someone might be able to offer more advice. -Mike -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Help needed regarding the let
You are effectively setting buf to null, that is implicit in a let. node-text doesn't persistently hold a reference to the buf does it? In a quick search, I see that StringBuilder will share the char[] with Strings from it's toString. I don't know if substring also shares, it may. Since you're releasing the reference to buf, it's not clear to me what (.setLength buf 0) will do, it's all available for GC anyway. You might want to open up the code for StringBuilder. If SB is sharing the char[] with the String from toString or substring, it's possible the char[] is much bigger than it needs to be. As you're appending to SB, it will grow the array speculatively, 2x I think, so it doesn't have to grow (and copy) with every append. If it then shares this array with the String, that String will hold onto an array 2x bigger than it needs. I've heard it recommend to create a new string out of the old one, so the old one can be GC'd even though this is an extra copy. I haven't researched this, but I hope this helps. -Mike -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Java Class Factory
(new) tries to resolve the argument at compile-time, not runtime. You need to spell out each (new class) in a cond. You might write a macro to make it a little less verbose. -Mike -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: ANN: Clojure API for AllegroGraph
You're right, the tests have not been converted to 3.2, so they are not running at this time. The best thing to look at is the tutorial.clj - most of these work properly, but example6 doesn't return correct results. The ones that don't work is where the clj code is incomplete, so I still have some work to do. I'll get these fixed or documented in the next few days. -Mike On Tue, Nov 24, 2009 at 3:31 PM, patrickdlogan patrickdlo...@gmail.comwrote: Hi Mike - thanks for this. I am fairly new to git, but from what I can tell, I have the agraph32 branch as current. The clojure code on the agraph32 branch still seems to be using the AG 4.0 API. For example... http://github.com/franzinc/agraph-java-client/blob/agraph32/clojure/test/com/franz/agraph/agtest.clj Running this against the agraph32 branch java jar results in a class not found exception... java.lang.ClassNotFoundException: com.franz.agraph.repository.AGCatalog (agtest.clj:0) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Weird Java Interop Behaviour
It's the . special form that makes the difference. In (. System (getProperty)), the dot interprets System as a class and looks for a static method (at read/compile time). With (identity System), System resolves to a value, a Class object, returned by identity, then your outside dot looks for a getProperty instance method on that object(fallback to reflection, which fails) - it's like writing System.class.getProperty in java. There is no syntax for clojure to lookup a static method on a dynamically resolved class object because that is inherently reflection - dot is not about reflection, though it will do it as a last resort. Hope that helps. -Mike -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Contrib (1.0 compatible) succeeds (but fails :-)
The github link for download is confusing. It points to the most recent download irrespective of branch. This should be correct: http://github.com/richhickey/clojure-contrib/archives/clojure-1.0-compatible -Mike On Wed, Nov 18, 2009 at 6:27 PM, .Bill Smith william.m.sm...@gmail.comwrote: Correction: I went to http://github.com/richhickey/clojure-contrib/tree/clojure-1.0-compatible and clicked the download button. On Nov 18, 8:14 pm, .Bill Smith william.m.sm...@gmail.com wrote: I went tohttp://github.com/richhickey/clojure-contrib/and clicked the Download button. Was that the wrong thing to do? Bill -- 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.comclojure%2bunsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Contrib (1.0 compatible) succeeds (but fails :-)
github has a ticket, so they should fix the link soon. On Wed, Nov 18, 2009 at 6:58 PM, Mike Hinchey hinche...@gmail.com wrote: The github link for download is confusing. It points to the most recent download irrespective of branch. -- 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
ANN: Clojure API for AllegroGraph
Franz Inc and I just put the AllegroGraph 3.2 Java API on github with my new Clojure API. The clojure is a wrapper of the java client, which is an implementation of openrdf/sesame. The wrapper is mostly to make it more idiomatic clojure so you don't have to deal with so many java classes, mutable objects, and resources that have to be closed. It's a work-in-progress, of course, and any feedback is appreciated. The master branch is for the future release AG 4.0, so you'll want to use the agraph32 branch for the current release. http://github.com/franzinc/agraph-java-client/tree/agraph32 This is the code I'll be presenting tomorrow at the Semantic Web installfest. http://www.meetup.com/The-San-Francisco-Semantic-Web-Meetup/calendar/11788554/ My future plans for this are to have more advance ways of manipulating triples, especially having them linked up in trees rather than a flat lists referring to each other, which is what you get back from a query. By the way, I included the clojure-1.0.jar because I assume this will be used by companies that need a stable release, but last I checked, the code works fine with master, and I'm happy to officially support master if that's what anyone wants. -Mike -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: Using Clojure with AllegroGraph - meeting SF 11/16
That's 11/15, Sunday. -Mike On Wed, Nov 4, 2009 at 8:21 AM, Marco Neumann marco.neum...@gmail.comwrote: FYI As part of the SemWeb Installfest Mike Hinchey (Franz) will present Using Clojure with AllegroGraph on 11/16 at the San Francisco Semantic Web Meetup. http://www.meetup.com/The-San-Francisco-Semantic-Web-Meetup/calendar/11788554/ Enjoy Marco Marco Neumann KONA New York, New York --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: How to override .toString for a struct?
You can (defmethod print-method), but you'll need a :type in the meta of your struct. -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Example of using ANTLR from Clojure?
I don't know anything about it, but counterclockwise uses antlr. http://groups.google.com/group/clojuredev-devel/browse_thread/thread/1428233ef12b6231 -Mike --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
with-open should use a close multimethod?
I have a suggestion for the with-open macro. It calls .close when it's finished. I'd like it to have a (defmulti close type) so it's behavior is extensible. A standard method could be defined for java.io.Closeable and a :default method with no type hint. I've come across a few cases where some external library defines what is essentially a close method but names it shutdown or disable, etc., and defining my own close method would be much easier than rewriting with-open. This would also allow people to eliminate reflection for classes like sql Connection that were created before Closeable. I'll submit a patch if it's wanted. This would fit in core, or maybe contrib.duck-streams with a slightly different name. -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: How to migrate definitions to another namespace ?
I use (remove-ns 'my-ns), then reload the entire file. -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Overflow by (inc) and (dec) at integer boundaries?
The difference is MAX_VALUE is a primitive int, but 1 (any literal) is an Integer. user Integer/MAX_VALUE 2147483647 user (inc 2147483647) 2147483648 But, I agree there is inconsistency. They should all check, except for the unchecked-* fns. user (* Double/MAX_VALUE Double/MAX_VALUE) Infinity user (* Integer/MAX_VALUE Integer/MAX_VALUE) #CompilerException java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0) Since multiple for long and int checks for overflow, shouldn't multiple for double and float check for Infinity? With that, then unchecked_multiple(double, double) is missing. Other edge cases for numbers: http://groups.google.com/group/clojure-dev/browse_thread/thread/6248584b202045e4 -Mike On Fri, Aug 14, 2009 at 2:37 AM, Seth seth.schroe...@gmail.com wrote: Is there a historical reason why (inc) and (dec) overflow instead of automatically promoting from Integer to Long when crossing Integer.MAX_VALUE or Integer.MIN_VALUE? The latter would be consistent with (+) and (-). user= (inc Integer/MAX_VALUE) java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0) user= (dec Integer/MIN_VALUE) java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0) user= (+ 1 Integer/MAX_VALUE) 2147483648 user= (- Integer/MIN_VALUE 1) -2147483649 user= (.getClass (+ 1 Integer/MAX_VALUE)) java.lang.Long Here is what the docs say. If this is intentional it might be worth noting in the docs. - clojure.core/inc ([x]) Returns a number one greater than num. I'm using Clojure 1.1 alpha (most recent commit is 2098f5d57ecf3affb09a4cdaf2e01ad4de861eef), java build 1.6.0_13- b03-211 --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Clojure performance tests and clojure a little slower than Java
John, this will speed up to the same as the others if you let the 0. IIRC from looking at the bytecode before, the 0 is an Integer not an int. user (time (let [m (int 1) b (double 4.0) x0 (double -0.2) y0 (double 0.1) t (double 2.0) i0 (int 0)] (loop [x (double 0.0) y (double 0.0) i m] (if ( i i0) (let [x2 (* x x) y2 (* y y)] (if ( (+ x2 y2) b) (recur (+ (- x2 y2) x0) (+ (* t (* x y)) y0) (unchecked-dec i)) i)) i Elapsed time: 881.387889 msecs 0 -Mike On Tue, Aug 11, 2009 at 10:00 PM, John Harrop jharrop...@gmail.com wrote: user= (time (let [m (int 1) b (double 4.0) x0 (double -0.2) y0 (double 0.1) t (double 2.0)] (loop [x (double 0.0) y (double 0.0) i m] (if ( i 0) (let [x2 (* x x) y2 (* y y)] (if ( (+ x2 y2) b) (recur (+ (- x2 y2) x0) (+ (* t (* x y)) y0) (unchecked-dec i)) i)) i Elapsed time: 3418.8542 msecs 0 Shockingly, reversing the count-up to a count-down and not changing anything else at all makes things much, MUCH worse, about four times slower. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Reflection warning: reference to field getClass can't be resolved.
This is nothing to worry about, but it does seem to be something that can be improved in clojure. I submitted a patch with a simple fix: http://www.assembla.com/spaces/clojure/tickets/171-reflection-warning-from-ns There is a more complex fix that could be made to the clojure compiler so it would check for both methods and fields before giving the warning. The InstanceFieldExpr prints this warning because it only checks for a field with the given name. However, when it evals, it first looks for a method, then a field. If it did that in the first place, there would be no warning, not just for ns, but user code also. Should a ticket be filed? -Mike On Wed, Aug 5, 2009 at 9:11 AM, Laurent PETIT laurent.pe...@gmail.comwrote: 2009/8/5 John Harrop jharrop...@gmail.com On Tue, Aug 4, 2009 at 7:46 PM, Vagif Verdi vagif.ve...@gmail.comwrote: When reflection warning is on, i get 2 warnings on every my file: reference to field getClass can't be resolved. That one is very weird, because getClass is a method of java.lang.Object. It should always be possible to resolve that one without reflection. getClass is a method ... --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: with-out-str assumes Unix line ends
What does this return on Windows? (with-out-str (.println (java.io.PrintWriter. *out*))) If it's \r\n, then maybe (newline) should be changed to print (System/getProperty line.separator) instead of \newline as it does now. Thoughts? -Mike On Thu, Aug 6, 2009 at 1:03 AM, Anne Ogborn annie6...@yahoo.com wrote: (use 'clojure.contrib.duck-streams) (spit C:\\test.txt (with-out-str (println foo) (println bar) (flush))) On my XP Tablet OS computer results in a file with unix line endings. Is this proper behavior? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: What happened to clojure.contrib web site ?
Do you mean this? http://clojure.org/libraries --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: source locations in error messages from macros
My example only had a :line because it was in the repl. I'm sure if it was in a .clj, it would have the source, too. -Mike On Tue, Jul 28, 2009 at 7:49 AM, Rob rob.nikan...@gmail.com wrote: Okay, I see what you are saying about why strings, symbols, etc, don't have meta data. I don't see how the system could change that without wrapping all the objects returned from the reader. Scheme does this, but I never got used to those wrapper syntax objects, and I'd like to experiment with this simpler way of doing it, and see if I can generate good enough error messages by having the location of only the compound/list expressions sent to the macro. But, I don't see a filename anywhere. Why isn't that in the metadata along with :line? Rob --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: source locations in error messages from macros
I think only code lists have the line and source metadata attached, so that's all that's available. The compiler can't attached such metadata to non-code vectors because, I think, that would potentially conflict with user's metadata. It can't put metadata on objects like Strings that don't support metadata, and it can't put metadata on symbols and keywords because those objects can appear in multiple places so there is no single source location. The compiler has the same limitations as your macro. I take it you found the meta for code lists: user (defmacro mac [col] `(throw (Exception. (str mac ~^col #'user/mac user (mac (or false true)) ; Evaluation aborted. user *e #CompilerException java.lang.Exception: mac{:line 2} (NO_SOURCE_FILE:0) -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Clojure as a CGI language?
As Daniel mentioned, Google App Engine can host java. It's very easy, just upload a war with your clj AOT-compiled. See http://elhumidor.blogspot.com/2009/04/clojure-on-google-appengine.html -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: ArithmeticException with doubles
user (/ (double 1.0) (double 0.0)) Infinity This seems reasonable since by using (double 0.0), you're asking for double-spec math rather than math. :) -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: [OT] github (?) question
On the Source tab, the fork of link tells you - that is, Rich's don't have that line, so it is the root. On the Network Members tab, it shows a tree of the forks, with Rich at the root. You can browse all of the data in a repository through the website, so you shouldn't have to clone. And you only need to Fork (a github concept, not git), if you want to push something different to your own public clone. Ultimately, what matters to GIT is the sha1 commit keys, which tell you a commit/tree is identical to another or not. I don't think you can tell about clones other than by looking at the sha1s or the Fork graphs that github draws. The forks graph only tells you about the clones that github knows about. And as Alex says, being the root doesn't really mean master, authoritative, or best. -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: A website written using Clojure.
Instead of eval in the doseq, you could use a macro with a do block, something like: user (defmacro deftags [tags] `(do ~@(map (fn [tag] `(defn ~(symbol (str tag -with)) [block#] (str ~tag block#))) tags))) #'user/deftags user (deftags [html]) #'user/html-with user (html-with [1]) html[1] -Mike On Thu, Jun 25, 2009 at 11:51 AM, CuppoJava patrickli_2...@hotmail.comwrote: Thanks for the reply. I use doseq instead of map because I need it to run immediately, and I'm not interested in the return values of the functions. I also would love to be able to simply the (eval ...) part, but I don't know of any other way to dynamically define a function in Clojure. If you know of a way it'd help me out a lot. -Patrick --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: HOWTO: Update the docs on clojure.org?
I don't know about wikispaces, but this is linked from clojure.org: http://en.wikibooks.org/wiki/Clojure_Programminghttp://en.wikibooks.org/wiki/Clojure_Programming -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Poll for a new name for clojure eclipse plugin 'clojure-dev'
I vote for EclipseClojure or eclipse-clojure. It's not as fun as some of the others, but do you really need a distinct brand on this project? I think easy to understand and search for is better. As Clojure becomes more mainstream, people won't care about a clever name of this project, they just want the solid integration. -Mike --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Code generation at runtime
I think the best way for me to approach this is to ask what you want to do. This is a generalization, but most code doesn't need to call eval - the REPL does, and some advanced uses of generating code at runtime based on data. The normal Lisp approach for code that generates code is macros (defmacro, not eval), so you might want to look into that first: http://clojure.org/macros. I see the repl in main.clj does something similar to you in its with-bindings, but the reason is to make those vars able to be set!, not to establish the external namespace for the eval. In your eval string, the ns is the default 'user ns. To use a different ns, you would need to establish that inside the string. I think the only difference between the REPL and the runtime you're seeing is precisely because the REPL is an environment for eval'ing code. There's no interpreter, only one compiler. Hope this helps. -Mike On Mon, Jun 22, 2009 at 5:38 PM, Chouser chou...@gmail.com wrote: On Mon, Jun 22, 2009 at 5:11 PM, Nicolas Ourynicolas.o...@gmail.com wrote: Of course, there is eval, but eval is not very competent in manipulating namespace and bindings at runtinme. eval is exactly what the REPL uses, one call to eval per top-level form. In several examples you put an 'ns' form and others into a single 'do' form -- you can try that at a REPL to see how it will work before putting it into an eval call. - (binding [*ns* *ns*] I think you may be misunderstanind something about Vars or binding -- I can't think of a situation in which the above usage of 'binding' would have any purpose. Perhaps it would be worth your time to review http://clojure.org/vars --Chouser --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Simple idiom in clojure, mutate a value
Adrian and David are suggesting how to work functionally, which is best when appropriate. Berlin, if you really need state modified over time, Clojure does this differently from most languages. Values never change, only references to values and only in controlled ways. Maybe what you want is a ref, see http://clojure.org/refs Something like this: (def x (ref 0)) (dosync ... (alter x inc)) (println @x) -Mike On Thu, Jun 11, 2009 at 11:21 AM, Berlin Brown berlin.br...@gmail.comwrote: On Jun 11, 12:16 pm, Daniel Lyons fus...@storytotell.org wrote: On Jun 11, 2009, at 9:25 AM, BerlinBrown wrote: I do this a lot but can't figure out to change the UPDATEABLE_VALUE, I am using some pseudo code because I don't have a clojure solution yet. SET UPDATEABLE_VALUE = 0 (loop [line (.readLine reader)] (if (or (empty? line) ( line-num max-num)) SET UPDATEABLE_VALUE = UPDATEABLE_VALUE + (SOME_FUNC) (recur (.readLine reader In general it's going to be something like this: (loop [line (.readLine reader) UPDATEABLE_VALUE 0] (if (or (empty? line) ( line-num max-num)) (recur (.readLine reader) (+ UPDATEABLE_VALUE (SOME_FUNC) Whenever you would have modified a local variable before, in FP you establish a new binding instead. — Daniel Lyonshttp://www.storytotell.org-- Tell It! I can modify the value within the loop, but what is a good approach for accessing the value outside of the loop. For example (pseudo code with a mix of procedural logic). ;; Init updateable value outside of 'loop' SET UPDATEABLE_VALUE = 0 (loop [line (.readLine reader)] (if (or (empty? line) ( line-num max-num)) SET UPDATEABLE_VALUE = UPDATEABLE_VALUE + (SOME_FUNC) (recur (.readLine reader ;; Now outside of the loop, use UPDATEABLE_VALUE with the mutated value (println UPDATEABLE_VALUE) --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: clojure slime
Clojure svn 1110 does work with latest swank-clojure. But, svn (doto) breaks swank again. user= java.lang.Exception: Unable to resolve symbol: start in this context (thread.clj:10) user= java.lang.Exception: No such var: swank/ignore-protocol-version (NO_SOURCE_FILE:5) user= java.lang.Exception: No such var: swank/start-server (NO_SOURCE_FILE:7) -Mike On Tue, Nov 18, 2008 at 10:35 PM, Jeffrey Chu [EMAIL PROTECTED] wrote: Sorry for the inconvenience. It's been fixed. - Jeff On Nov 18, 5:41 pm, islon [EMAIL PROTECTED] wrote: I'll not use slime right now (thanks Bill). swank-clojure will be fixed anytime soon? On Nov 18, 11:15 pm, Stephen C. Gilardi [EMAIL PROTECTED] wrote: SVN version 1110 of Clojure made a breaking change to a feature that swank-clojure is using. For now, I recommend moving back one rev by using: svn up -r 1109 from within your checkout of clojure/trunk. In the past, Jeff has updated swank-clojure very quickly on those rare occasions where Clojure changes enough to break it. Stay tuned. --Steve On Nov 18, 2008, at 8:01 PM, islon wrote: I checkouted the last clojure from svn, swank-clojure and clojure-mode too. When I start slime it give me the following errors: Clojure user= (add-classpath file:home/islon/opt/swank-clojure/) nil user= (require (quote swank)) java.lang.Exception: No such var: swank.util/gen-and-load-class (core.clj:39) user= (swank/ignore-protocol-version 2008-11-02) java.lang.Exception: No such var: swank/ignore-protocol-version (NO_SOURCE_FILE:5) user= (swank/start-server /tmp/slime.22694 :encoding iso-latin-1-unix) java.lang.Exception: No such var: swank/start-server (NO_SOURCE_FILE: 7) user= It worked until I update clojure from svn. Any ideas? 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Print compiled Clojure svn revision?
Haven't we been through this before? http://groups.google.com/group/clojure/browse_thread/thread/1ae7eae292765d40/f49c4ccdaca67a23 --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Suggest fcase variant pred-case
On Tue, Oct 28, 2008 at 2:49 PM, Rich Hickey [EMAIL PROTECTED] wrote: On Oct 28, 10:29 am, Stuart Sierra [EMAIL PROTECTED] wrote: I feel like econdp would be less clear, since you don't know what kind of exception should be thrown. Plain old Exception? Or RuntimeError? The kind of error is TBD, but it won't be random. It saves everyone a) redundantly having to specify this, and b) specifying needlessly different Exceptions and messages on no matching case. It's pretty useful in CL. Finally there is the name, which has to follow the form and function. If we go with something like the last above, I like condp/econdp. I'm not sure about condp, only because Clojure hasn't used the CL-ish -p suffix anywhere else. Ideas: condfn, fcond, cond-apply, cond- with, try-each,... This wouldn't match the use of trailing p in CL, which has been replaced by ? in Clojure. I like leading with cond so it sorts together to make people aware of the option. I don't think I like any of those better - whatever it is should be short. I also like it leading with cond, so condp or condf, but econdp doesn't fit, so condpe? Having a general naming convention like trailing F would be nice, I've needed that type of thing before - assuming this can be generalized. How about :error as the last clause (test with no expr, or optional expression) instead of a different macro? Though :error could be a conflict if that was really one of the tests, so maybe define clojure/error? I disliked looking up so many different macros for this in CL. Also, would you want an error variant or option for cond? -Mike --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: What Windows IDE are you using?
I use emacs and slime, also. Has anyone used http://jdee.sourceforge.net/ with Clojure, or even just with Java? -Mike --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
ClassNotFoundException for an fn in 1067
I know the #= and the AOT changes are new and not explained yet. It seems to break a macro I'm writing, which does something like this example. It does what I want in 1064, but not 1067. user (defmacro aa [f x] `(~(var-get (resolve f)) ~x)) nil user (aa inc 3) java.lang.ExceptionInInitializerError (NO_SOURCE_FILE:0) at clojure.lang.Compiler.eval(Compiler.java:4094) at clojure.eval__778.invoke(boot.clj:1431) at swank.commands.basic.eval_region__2884.invoke(basic.clj:34) at swank.commands.basic.listener_eval__2893.invoke(basic.clj:48) at clojure.lang.Var.invoke(Var.java:319) at user.eval__3447.invoke(Unknown Source) at clojure.lang.Compiler.eval(Compiler.java:4083) at clojure.eval__778.invoke(boot.clj:1431) at swank.core.eval_in_emacs_package__2720.invoke(core.clj:49) at swank.core.eval_for_emacs__2761.invoke(core.clj:104) at clojure.lang.Var.invoke(Var.java:327) at clojure.lang.AFn.applyToHelper(AFn.java:190) at clojure.lang.Var.applyTo(Var.java:436) at clojure.apply__135.doInvoke(boot.clj:364) at clojure.lang.RestFn.invoke(RestFn.java:428) at swank.core.eval_from_control__2723.invoke(core.clj:56) at swank.core.eval_loop__2726.invoke(core.clj:61) at swank.core.spawn_repl_thread__2781$fn__2790$fn__2792.invoke(core.clj: 137) at clojure.lang.AFn.applyToHelper(AFn.java:182) at clojure.lang.AFn.applyTo(AFn.java:175) at clojure.apply__135.doInvoke(boot.clj:364) at clojure.lang.RestFn.invoke(RestFn.java:428) at swank.core.spawn_repl_thread__2781$fn__2790.doInvoke(core.clj:134) at clojure.lang.RestFn.invoke(RestFn.java:402) at clojure.lang.AFn.run(AFn.java:38) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at clojure.lang.Compiler$FnExpr.eval(Compiler.java:3170) at clojure.lang.Compiler.eval(Compiler.java:4082) ... 25 more Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: clojure.inc__305 at clojure.lang.RT.readString(RT.java:1184) at user.eval__3450.clinit(Unknown Source) ... 33 more Caused by: java.lang.ClassNotFoundException: clojure.inc__305 at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java: 52) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at clojure.lang.RT.classForName(RT.java:1509) at clojure.lang.LispReader$EvalReader.invoke(LispReader.java:876) at clojure.lang.LispReader$DispatchReader.invoke(LispReader.java:509) at clojure.lang.LispReader.read(LispReader.java:141) at clojure.lang.RT.readString(RT.java:1180) ... 34 more I get a similar exception with the example below. Am I misunderstanding, or should I be able to eval the #=form printed for a fn? user inc #=(clojure.inc__305. [EMAIL PROTECTED]) user #=(clojure.inc__305. [EMAIL PROTECTED]) clojure.lang.LispReader$ReaderException: java.lang.ClassNotFoundException: clojure.inc__305 (NO_SOURCE_FILE:0) at clojure.lang.Compiler.eval(Compiler.java:4094) at clojure.eval__778.invoke(boot.clj:1431) at swank.core.eval_in_emacs_package__2720.invoke(core.clj:49) at swank.core.eval_for_emacs__2761.invoke(core.clj:104) at clojure.lang.Var.invoke(Var.java:327) at clojure.lang.AFn.applyToHelper(AFn.java:190) at clojure.lang.Var.applyTo(Var.java:436) at clojure.apply__135.doInvoke(boot.clj:364) at clojure.lang.RestFn.invoke(RestFn.java:428) at swank.core.eval_from_control__2723.invoke(core.clj:56) at swank.core.eval_loop__2726.invoke(core.clj:61) at swank.core.spawn_repl_thread__2781$fn__2790$fn__2792.invoke(core.clj: 137) at clojure.lang.AFn.applyToHelper(AFn.java:182) at clojure.lang.AFn.applyTo(AFn.java:175) at clojure.apply__135.doInvoke(boot.clj:364) at clojure.lang.RestFn.invoke(RestFn.java:428) at swank.core.spawn_repl_thread__2781$fn__2790.doInvoke(core.clj:134) at
Re: ClassNotFoundException for an fn in 1067
On Oct 13, 5:31 am, Rich Hickey [EMAIL PROTECTED] wrote: You cannot, and might never be able to, print/read fns. Okay, it just looked like something that could be read. I would examine carefully whether your macro really should be doing this, as this is likely to become disallowed once Clojure can AOT compile. With a let and gensym outside of the backquote, I don't need the var- get and resolve. That works. The other option would be to allow some things dynamically but not AOT, which is definitely not my preference. Rich --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: error in slime with svn 1057
fixed in svn 1058. Thanks. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Trying to run Clojure with Slime...
Get the clojure from today. That error happened yesterday. -Mike --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Get thread local bindings
swank-clojure has a similar issue, but solved by choosing explicitly which bindings to keep. It's usually advised to avoid eval. Of course, this only works for threads created by the specific macro. I suppose the vec of bindings to keep could be keep in a var to avoid repetition. (dothread-keeping [*out* *ns* *current-connection* *warn-on- reflection*] ...) See dothread-keeping in http://github.com/jochu/swank-clojure/tree/master/swank/util/concurrent/thread/thread.clj And keep-bindings in http://github.com/jochu/swank-clojure/tree/master/swank/util/util.clj -Mike --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Star-Vars for the repl to provide recent values, shorten error messages
I added support for *1 *2 *3 in my fork of swank-clojure (for emacs/ slime), http://github.com/mikehinchey/swank-clojure. I did one thing different which is to not reset the vars if the eval is one of the vars themselves. Rich noted most CL repls don't do this, but it seems useful to me. Thoughts? user :a :a user :b :b user :c :c user *1 :c user *2 :b user *3 :a user (list *1 *2 *3) (:c :b :a) --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Serialization Snag
You wouldn't be able to execute any clojure created class or proxy without having clojure available on the other side. You would have to stream all of the dynamic classes that clojure creates (and each fn is also a class), but also have available the clojure.lang stuff it depends on to load and run. I don't know about Thrift, but PB is just another way of streaming data. If you can get clojure on both sides, you could not only stream the clojure data structures, but code text also (assuming the environment is secure). Code is data :). -Mike On Sep 12, 9:59 am, noahr [EMAIL PROTECTED] wrote: Well digging into it more, I've since realized the whole approach I was taking is misguided anyway, as serialization appears to be for marshaling the data of already defined classes. What I was really trying to do was create new classes (java or clojure), and stream them across the network, and have them executed on other side by a system that only knew the 'parent' class or interface. But I believe this will require custom class loading from bytes on the other side. I still suspect though there will be issues when trying to mix dynamic clojure-created classes with serialization, due to its data types not being serializable. Some of the customizations for java serialization might offer a way out, but uncertain.. Also, I don't have clojure on both sides; unfamiliar with thrift/ protocol buffers, will look them up. Thx --n If you've got Clojure available on both ends, you can serialize with (pr-str...) and deserialize with (read...). Only works with pure- Clojure data structures, tho. Maybe you could use Clojure to generate a native Java collection like ArrayList and serialize that. Another option is something like Thrift or Protocol Buffers. --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---
Re: Bug: self require - stack overflow
It doesn't seem *impossible* for require and use to keep a var set of namespaces it's loading and check if the current is already in the set then give an error. However, I don't think clojure supports circular dependency since loading is sequential. I know there's a trick for functions to be circularly dependent, and I suppose that could be done with files, but you'd have to load the files manually, not with (ns). Unless I'm missing something, this is probably something people will expect to work, so a friendly error message would be good. -Mike On Sep 9, 1:29 am, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: On Sep 9, 8:48 am, Brett Morgan [EMAIL PROTECTED] wrote: You seem to be asking for the compiler to be able to prove that your computation finishes, and if it doesn't then give you a sane response. No. --~--~-~--~~~---~--~~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~--~~~~--~~--~--~---