iyzsong@outlook.com schreef op za 12-03-2022 om 10:22 [+0800]: > +         (merge-options (lambda (options) ;merge options by section > +                          (fold > +                           (lambda (e prev) > +                             (match e > +                               ((section variables ..1) > +                                (begin > +                                  (let ((v (assv-ref prev section))) > +                                   (assv-set! prev section > +                                              (if v (append v variables) > +                                                  variables))))))) > +                           '() options)))) Seems rather imperative. Can this be avoided, e.g. using vhashes? Excerpt from the manual: > 18.5.1 Programming Paradigm > --------------------------- > > Scheme code in Guix is written in a purely functional style. One > exception is code that involves input/output, and procedures that > implement low-level concepts, such as the ‘memoize’ procedure. Greetings, Maxime.