Subject: [bug#32121] [PATCH 3/5] database: Add support for database upgrades.

From: Clément Lassieur <[email-masked]>
Date: Sat, 14 Jul 2018 17:00:58 +0200

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

>> +  (apply max
>> +         (map string->number
>> +              (map (cut match:substring <> 1)
>> +                   (filter regexp-match?
>> +                           (map (cut string-match
>> +                                  "^upgrade-([0-9]+)\\.sql$" <>)
>> +                                (scandir (%package-sql-dir))))))))
>
> I think you can write it along these lines:
>
>   (reduce max 0
>           (map (compose string->number (cut match:substring <> 1))
>                (filter-map (cut string-match …) (scandir …))))

Very nice!  Now it returns 0 if the list is empty (which shouldn't
happen) but it makes more sense.

> I would rather avoid SRFI-42, not just because I can’t parse it ;-), but
> also to maintain consistency and make the code possibly more accessible.
>
> In this case I think we could use a simple loop or (for-each … (iota n))
> and that wouldn’t be bad.

iota...  Exactly what I was looking for!  But for some reason I thought
it would be named something like "range" :-)

Thank you so much!
Clément