Subject: bug#66777: program-file silently corrupts expressions with non-ascii characters

From: Tomas Volf <[email-masked]>
Date: Fri, 27 Oct 2023 20:56:50 +0200

Hello,

when trying to create an executable script using `program-file', I realized it
silently corrupts expressions with non-ascii characters.  Minimal reproduction I
did put together is:

    scheme@(guix-user)> ,use (guix)
    scheme@(guix-user)> ,build (program-file "foo" '(λ))
    $1 = "/gnu/store/im07w0ilskfycpkwid3n7s80hdv263cn-foo"
    scheme@(guix-user)> (call-with-input-file $1 read)
    ;;; <stdin>:3:22: warning: possibly unbound variable `$1'
    $2 = (?)

Notice that $2 is (?) instead of the expected (λ).  If there is a technical
reason why this cannot be handled correctly, it would be great if it at least
failed with an error instead of a silent corruption.

Have a nice day,
Tomas Volf

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.