Subject: [bug#54997] [PATCH 01/12] gexp: Add 'references-file'.

From: Thiago Jung Bauermann <[email-masked]>
Date: Fri, 22 Apr 2022 02:01:39 -0300

Hello Ludo,

This is an awesome series! It will be yet another strength of Guix to
have many services as possible (and even desktop apps, hopefully)
isolated.

I have one question:

Ludovic Courtès <[email-masked]> writes:

> +                             (define (read-graph port)
> +                               ;; Return the list of references read from
> +                               ;; PORT.  This is a stripped-down version of
> +                               ;; 'read-reference-graph'.
> +                               (let loop ((items '()))
> +                                 (match (read-line port)
> +                                   ((? eof-object?)
> +                                    items)
> +                                   ((? string? item)
> +                                    (let ((deriver (read-line port))
> +                                          (count
> +                                           (string->number (read-line port))))
> +                                      (drop-lines port count)
> +                                      (loop (cons item items)))))))

I'm sure I'm being dense, but I don't see how ‘item’ can change between
iterations of this loop. Which in my mind means that ‘read-graph’ can
only return a list where the original ‘item’ argument from
‘references-file’ is repeated many times over. I ran the tests/gexp.scm
test and all tests pass, so this code must be working...

-- 
Thanks
Thiago