unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* I think thunked fields are breaking my previously working code
@ 2022-01-10 17:55 edk
  2022-01-10 21:39 ` Ricardo Wurmus
  0 siblings, 1 reply; 2+ messages in thread
From: edk @ 2022-01-10 17:55 UTC (permalink / raw)
  To: help-guix

Dear Guixers

This is a follow-up on

https://lists.gnu.org/archive/html/help-guix/2022-01/msg00000.html

Using the REPL, I traced the bug on my code trying to update fields of
an operating-system records, which on gnu/system.scm are declared as
"thunked".

Guile is not my primary language. I would really appreciate some
pointers here:
- Why is it that I can't update those fields ?
- I was able to ~1 month ago, but can't do that now. Why ? Is my
use-case unsupported ? Should I expect other breaking change in the
future ? i.e. was I using a non-public interface ?
- How can I update those fields ?

For example, given that "minimal-container" is an operating system, I
can do the following:

(set-fields minimal-container ((operating-system-host-name) "toto"))

But not:

(set-fields minimal-container ((operating-system-label) "toto"))

while both fields are supposed to be strings, but label is "thunked".

Thanks in advance for any help.

Cheers,

Edouard.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: I think thunked fields are breaking my previously working code
  2022-01-10 17:55 I think thunked fields are breaking my previously working code edk
@ 2022-01-10 21:39 ` Ricardo Wurmus
  0 siblings, 0 replies; 2+ messages in thread
From: Ricardo Wurmus @ 2022-01-10 21:39 UTC (permalink / raw)
  To: edk; +Cc: help-guix


edk@beaver-labs.com writes:

> For example, given that "minimal-container" is an operating system, I
> can do the following:
>
> (set-fields minimal-container ((operating-system-host-name) "toto"))
>
> But not:
>
> (set-fields minimal-container ((operating-system-label) "toto"))

In Guile we usually try to avoid mutation like that.  The records API
allows you to use inheritance instead:

  (operating-system
    (inherit minimal-container)
    (label "toto"))

Thunking just means that the field is a procedure that returns a value
when called with no arguments.  The records in (guix records) are not
plain SRFI9 records, so I would not expect set-fields to work at all.

-- 
Ricardo


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-10 21:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-10 17:55 I think thunked fields are breaking my previously working code edk
2022-01-10 21:39 ` Ricardo Wurmus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).