Initial commit
This commit is contained in:
commit
55a1efa08f
60 changed files with 5485 additions and 0 deletions
28
docs/modules/ROOT/pages/zexp.adoc
Normal file
28
docs/modules/ROOT/pages/zexp.adoc
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
= zexps
|
||||
|
||||
zexps, similar to g-expressions in Guix, are a way to generate
|
||||
S-expressions that are taggged with store paths. But that's where
|
||||
the similarity ends.
|
||||
|
||||
|
||||
To create a zexp, you can use either the full syntax, or the reader macro:
|
||||
|
||||
[,scheme]
|
||||
----
|
||||
#~(foo bar #$baz)
|
||||
; is identical to:
|
||||
(zexp (foo bar (zexp-unquote baz)))
|
||||
----
|
||||
|
||||
`(zexp-unquote VAL)` returns the value that the zexp (or any compatible record)
|
||||
contains, while gathering the `zexp-unquote`d values used.
|
||||
|
||||
Like quasiquotation, zexps can use `unquote`, including ``zexp-unquote``d values
|
||||
inside the ``unquote``d code. ``unquote``d code is evaluated when the `zexp` is evaluated.
|
||||
|
||||
[,scheme]
|
||||
----
|
||||
(define world #~,(begin (write "hello") "world"))
|
||||
(define hello #~("hello" ,(string-append "very " "cute") #$world))
|
||||
; When hello is used as zexp, it will also write "hello" to the output port.
|
||||
----
|
||||
Loading…
Add table
Add a link
Reference in a new issue