Federico Beffa <[email protected]> skribis:

> On Wed, Nov 25, 2015 at 10:45 PM, Ludovic Courtès <[email protected]> wrote:
>> Federico Beffa <[email protected]> skribis:
>
> [...]
>
>>>>> +      ;; indentation based block recognition.
>>>>> +      (begin (unread-char #\newline port) (read-char port) 0)
>>>>
>>>> Isn’t this equivalent to: 0 ?
>>>
>>> No. This is because at the start of a new line we check if and how
>>> many indentation blocks have ended. If the last line doesn't terminate
>>> this check is no done.
>>
>> More generally, it looks like:
>>
>>   (begin (do-effect!) (undo-effect!) val)
>>
>> which I thought reduces to:
>>
>>   val
>
> Since we are doing IO, there are side effects. The key difference is
> the result of '(port-column port)' and that triggers what I mentioned.

Oooh, I see, thanks for explaining!  Then what about a comment like:

  Read a newline from PORT to reset its ‘port-column’, as expected by
  the indentation-based block recognition code.

I think it would be helpful for those like me who are hard of hearing.
;-)

Ludo’.



Reply via email to