I reuploaded the patch 3 times for various reasons, please refresh to get
the latest.

Thanks,
Ambrose


On Sun, Jul 27, 2014 at 12:44 AM, Ambrose Bonnaire-Sergeant <
abonnaireserge...@gmail.com> wrote:

> I handled preconditions, and added a new patch.
>
> Thanks,
> Ambrose
>
>
> On Sat, Jul 26, 2014 at 11:52 PM, Michael O'Keefe <
> michael.p.oke...@gmail.com> wrote:
>
>> Nice work everyone on the patches -- I'm very impressed!
>>
>> There's been a couple of questions about how to interpret this. My
>> thought is we should try and mimic an explicit recursion:
>>
>> In other words:
>>
>> (defn g
>>   [xs acc]
>>   {:pre [(or (nil? xs) (sequential? xs)) (number? acc)]
>>    :post [(number? %)]}
>>   (if (seq xs)
>>     (recur (next xs) (+ (first xs) acc))
>>     acc))
>>
>> ... should act like:
>>
>> (defn g3
>>   [xs acc]
>>   {:pre [(or (sequential? xs) (nil? xs)) (number? acc)]
>>    :post [(number? %)]}
>>   (if (seq xs)
>>     (g3 (next xs) (+ (first xs) acc))
>>     acc))
>>
>> (g [1 2 3] 0)
>> (g3 [1 2 3] 0)
>>
>> ... where g3 actually works (but runs the risk of blowing the stack).
>>
>> Michael
>>
>>
>> On Saturday, July 26, 2014 9:34:48 AM UTC-6, Ambrose Bonnaire-Sergeant
>> wrote:
>>
>>> Doh! I forgot preconditions :D
>>>
>>> Fixing..
>>> Ambrose
>>>
>>>
>>> On Sat, Jul 26, 2014 at 11:30 PM, Ambrose Bonnaire-Sergeant <
>>> abonnair...@gmail.com> wrote:
>>>
>>>> Hi Steve,
>>>>
>>>> I think I got it right, please have a look: http://dev.clojure.org/
>>>> jira/browse/CLJ-1475
>>>>
>>>> Thanks,
>>>> Ambrose
>>>>
>>>>
>>>> On Sat, Jul 26, 2014 at 10:38 PM, Ambrose Bonnaire-Sergeant <
>>>> abonnair...@gmail.com> wrote:
>>>>
>>>>> I'll give it a shot..
>>>>>
>>>>>
>>>>>  On Sat, Jul 26, 2014 at 9:59 PM, Steve Miner <steve...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I'm giving up on this bug.  My approach was adding too much
>>>>>> complexity to handle an edge case.  Hacking the fn macro is not as easy 
>>>>>> as
>>>>>> it looks. :-)
>>>>>>
>>>>>> I recommend the loop work-around if you run into this problem.  Or
>>>>>> refactor the recursive code into a separate function and call it from
>>>>>> another function with the :pre and :post conditions in the non-recursive
>>>>>> function.
>>>>>>
>>>>>> http://dev.clojure.org/jira/browse/CLJ-1475
>>>>>>
>>>>>> --
>>>>>> 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.
>>
>
>

-- 
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