I hear what you're saying. Given that recur is a special form, there exists a closed set of exceptions to be worked around like this even theoretically, so I could see the argument for having this patch accepted and not opening pandora's box.
On Friday, July 25, 2014 11:36:36 AM UTC-4, Michael O'Keefe wrote: > > Adrian, thanks for your input on whether this is a bug or not. Your > viewpoint may yet prove to be the "accepted" one but I still felt like the > original way I wrote the function should have meant: <check pre-conditions> > <function runs> <check final return to caller>. In that sense, it feels > like my original function g should have been semantically equivalent to > g2... but we'll see. > > Thanks for the ticket and patch, Steve! Also, I seem to now be able to > finally log into JIRA -- I'll sign up to watch the ticket. > > Anyhow, thanks everyone! We'll see what happens. > > Michael > > On Friday, July 25, 2014 8:41:47 AM UTC-6, Ambrose Bonnaire-Sergeant wrote: >> >> Now that Steve mentions it, I have fixed this kind of issue in my own >> defn macros. IIRC adding an inner loop form did the trick. >> >> Thanks, >> Ambrose >> >> >> On Fri, Jul 25, 2014 at 10:35 PM, <adrian...@mail.yu.edu> wrote: >> >>> I do not believe this should be considered a bug. Recur is a special >>> form that rebinds the bindings at the point of recursion with new values. >>> It does not return a value. It does not get evaluated in the normal sense >>> of the word. You cannot type check a value on a valueless expression. Just >>> think about the implications of what a post condition on a recur form >>> means. Even if you wanted to give value semantics to the evaluation of a >>> recur form, there would be no single value it could check against. If you >>> wanted the post condition to only be evaluated on the termination of the >>> loop, or when the recur form is not conditionally present in the >>> expression, then you are essentially asking the impossible for the >>> compiler: it cannot know your intentions better than you do. >>> >>> >>> On Friday, July 25, 2014 10:12:14 AM UTC-4, Michael O'Keefe wrote: >>>> >>>> Thanks Bob, Steve, and Andy. I was trying to get logged into JIRA to >>>> file the bug report but I seem to be having a heck of a time -- I have a >>>> CA >>>> and am signed up at dev.clojure.org but when I try to log into JIRA, >>>> it gives me a nice "System Error" saying " user should not be null!". I've >>>> run out of time to deal with this right now but, Steve, if you get to it >>>> before me, feel free to submit the bug report. >>>> >>>> Thanks all for the helpful discussions! >>>> >>>> Michael >>>> >>>> On Friday, July 25, 2014 7:58:51 AM UTC-6, miner wrote: >>>>> >>>>> I will call it a bug. It's definitely surprising to the user, and >>>>> therefore worthy of a ticket. On first glance, it seems that the fix >>>>> isn't >>>>> too hard. In core.clj where the macro fn is redefined, we just need to >>>>> wrap >>>>> the section that handles the post condition either with a loop* or a fn* >>>>> so >>>>> that the body has the proper recur target. I'll try to make a patch and >>>>> a >>>>> test. If it works, I'll file a bug with the patch. >>>> >>>> -- >>> 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/d/optout. >>> >> >> -- 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/d/optout.