Hacker News new | ask | show | jobs
by rekado 3222 days ago
In Guix not only package definitions are written in Scheme, but also build phases. These build phases are evaluated at a different time in the context of the build daemon. This means that there are two major strata, both of which are written in Scheme. Expressions that are evaluated in the build context look no different than other expressions.

That's not the only instance of "staged" execution. Guix introduces G-expressions, a quoted expression in a build context where unquoted package values are replaced with absolute directory names that are not known until execution time.

Quoting and unquoting code and dealing with different strata of evaluation come natural in Scheme.

Another simpler example of staged execution might be the remote code execution feature of Guile-SSH.

You may also like to read about multitier programming in Hop: http://queue.acm.org/detail.cfm?id=2330089