[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: guile 2.1.7 skips while condition
From: |
Andy Wingo |
Subject: |
Re: guile 2.1.7 skips while condition |
Date: |
Mon, 13 Mar 2017 21:35:37 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
On Mon 13 Mar 2017 18:09, Arne Babenhauserheide <address@hidden> writes:
> Arne Babenhauserheide writes:
>
>> Andy Wingo <address@hidden> writes:
>>
>>> On Thu 09 Mar 2017 15:31, Arne Babenhauserheide <address@hidden> writes:
>>>
>>>> However I did not manage to reproduce it in a small example, therefore I
>>>> pastebinned the whole file:
>>>>
>>>> script: https://paste.pound-python.org/show/0IlalBrxVH7KHjW83ayu/
>>>> input: https://paste.pound-python.org/show/ZxQsazFfwVrvz9f4SU4f/
>>>
>>> Sounds like you found a nice bug. This is a big script though; have you
>>> tried incrementally removing parts of it to winnow it down? That is
>>> definitely the first step to fixing the bug :)
>>
>> I tried building a minimal working example, but not removing stuff bit
>> by bit (due to time constraints on free creative time). I would hope
>> that it shouldn’t be too complex, but cannot promise I’d get it done
>> within the next few weeks.
>
> Here’s a shortened version:
Or even smaller:
(define (t)
(let ((n #t))
(let lp ()
(when n
(call-with-prompt 'foo
(lambda ()
(set! n #f)
(abort-to-prompt 'foo))
(lambda (k)
(lp)))))))
Guile is thinking that the n is always true because it doesn't
understand that aborting back to the prompt means that possible all
mutable objects are mutated.
Andy