Hi,

Tomas Volf <[email protected]> writes:

[...]

> One could argue that when looking at
>
>     (let ((services (modify-services ...)))
>       (operating-system
>         (inherit %base-os)
>         (services services)))


> it is obvious what it *should* do (and what it looks like it is doing).
> Yet here we are.  So while this change definitely satisfies the latter
> part of the goal, I still question alignment to the former.

I'm also uneasy with the above, but I guess it's not that different
compared the current magical features of Guix records like binding
'version' from the point where it's defined in the package.  That it
depends on the thunkness of the field makes it a bit unwieldy to reason
with, though.

Perhaps the syntax could be refined even more to emit a warning when a
variable name already bound in the scope gets shadowed by this new
mechanism?  This would help greatly detecting potential problems and
reduce the cognitive burden associated with trying to foresee
problems/writing correct code.

-- 
Thanks,
Maxim

Reply via email to