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.

Reply via email to