Am Mo., 4. Dez. 2023 um 12:33 Uhr schrieb Sergei Egorov <e...@acm.org>:

> It is not that the code is unreadable in some general definition of the
> term, it is that some forms of it suddenly become potentially misleading or
> questionable. Before SRFI-245, I could be 100% sure, when reading the body
> of a big procedure, starting e.g. as follows:
>
> (lambda (x y z)
>     .... (lambda () (list x y z))
>     (display "hello")
>     ... a lot of commands below,
> going off-screen ...
>
> that x refers to the first parameter, with SRFI-245 it is no longer so: x
> can be defined anywhere in the same body; so can y, z, and list.
>

Even before SRFI 245, you would have missed a

(define-syntax display
  (syntax-rules ()
    [(_ arg) (define tmp (put-string (current-output-port) arg))]))

that would have come very far below your code in question (at the same
level as where the lambda expression is bound).

It is not a particular "problem" of SRFI 245; Scheme programs can only be
understood if read globally.  Only the sanity of the programmers prevents
us from actually having to do it.

Marc

Reply via email to