* Newbie packagers
@ 2016-07-21 13:21 Vincent Legoll
2016-07-21 15:52 ` Ricardo Wurmus
2016-07-21 15:54 ` Ludovic Courtès
0 siblings, 2 replies; 16+ messages in thread
From: Vincent Legoll @ 2016-07-21 13:21 UTC (permalink / raw)
To: help-guix
I put this in a separate email, as it's becoming long...
The packaging doc:
https://www.gnu.org/software/guix/manual/guix.html#Defining-Packages
is good, but still not enough for beginners.
Essentially it's missing what is hidden behind "Without being a Scheme ..."
It wouldn't hurt to have the scheme non-obvious parts explained:
- the comma operator
- the backquote operator
- the quote operator
- the arobase operator (is it for list unpacking ?)
- the percent operator
- the #: operator
- the different module import things (#:use-module vs (use-modules) vs ...)
(Forgive my probably-not-appropriate terms.)
No need to explain function calls, string quoting and simple stuff, though.
I tried to find a good tutorial explaining all of those, but couldn't. I found
snippets that helped me understand some of those, but they were scattered,
and it's still blurry.
Specific explanations will be more useful that a general scheme tutorial, the
hello.scm is good as an example :
(inputs `(("gawk" ,gawk)))
here we use the backquote because ...
the comma is there for ...
(arguments `(#:configure-flags '("--enable-silent-rules")))
here the #: means ...
we use the simple quote because ...
Obviously I cannot write that myself, but if someone does the explanation,
I volunteer the .texi translation...
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 13:21 Newbie packagers Vincent Legoll
@ 2016-07-21 15:52 ` Ricardo Wurmus
2016-07-21 17:13 ` Vincent Legoll
2016-07-23 10:21 ` Andreas Enge
2016-07-21 15:54 ` Ludovic Courtès
1 sibling, 2 replies; 16+ messages in thread
From: Ricardo Wurmus @ 2016-07-21 15:52 UTC (permalink / raw)
To: Vincent Legoll; +Cc: help-guix
Hi Vincent,
> - the comma operator
> - the backquote operator
> - the quote operator
> - the arobase operator (is it for list unpacking ?)
These are all about list quoting.
This is code:
(+ 1 2 3)
It evaluates to 6.
This is quoted code (aka data):
'(+ 1 2 3)
It doesn’t get evaluated any further.
This is pretty much the same as:
`(+ 1 2 3)
But with the backtick (called “quasiquote”) you are permitted to
temporarily switch from “data mode” to “code mode”. That’s what the
comma (“unquote”) does:
`(+ 1 2 3 4 ,(+ 3 2) 6)
^ ^
data mode code mode
The result is the same as
'(+ 1 2 3 4 5 6)
What’s nice about this is that we can use the same syntax for code that
is to be evaluated right now and for code that we want to pass somewhere
else as inert data which will be evaluated at a later point.
This allows for “staging”. When you look at a typical package
expression you see that the value of the “arguments” field is quoted.
It is not evaluated right away but in a second stage.
The value of the inputs field is also quoted. You see that we unquote
the values of package variables there. Package expressions in Guix are
just Scheme values. The inputs field does not merely hold a list of
symbols that somehow represent the packages — it actually contains the
very values themselves!
“,@” is for splicing lists:
(let ((moo '(1 2 3)))
`(foo bar ,@moo meh))
This binds the list '(1 2 3) to the name “moo” and then splices it into
another list. This results in
'(foo bar 1 2 3 meh)
Without the “@” and just a regular unquote comma it would be a nested
list:
(let ((moo '(1 2 3)))
`(foo bar ,moo meh))
=> '(foo bar (1 2 3) meh)
Quoting and unquoting is a very useful feature. I hope my explanations
above are easy to understand.
> - the percent operator
That’s no operator. It’s part of the name. We use the percent as a
prefix for variables that are “special”, e.g. global variables or
values that appear without having to be explicitly let-bound.
> - the #: operator
These are called keyword arguments. They are no operators either.
Using keyword arguments allows you to specify arguments by name, not in
some fixed order.
> - the different module import things (#:use-module vs (use-modules) vs ...)
That’s probably explained in the Guile reference manual. We use
“#:use-module” only in module definitions. “(use-modules …)” can be
used anywhere else.
> I tried to find a good tutorial explaining all of those, but couldn't. I found
> snippets that helped me understand some of those, but they were scattered,
> and it's still blurry.
>
> Specific explanations will be more useful that a general scheme tutorial, the
> hello.scm is good as an example :
>
> (inputs `(("gawk" ,gawk)))
>
> here we use the backquote because ...
> the comma is there for ...
>
> (arguments `(#:configure-flags '("--enable-silent-rules")))
>
> here the #: means ...
> we use the simple quote because ...
Yeah, I agree. There should be a quick crash course. I spent half the
day yesterday to introduce all these things to a colleague who will
create a few Guix packages in the future. It would be cool to have this
as part of the manual.
~~ Ricardo
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 13:21 Newbie packagers Vincent Legoll
2016-07-21 15:52 ` Ricardo Wurmus
@ 2016-07-21 15:54 ` Ludovic Courtès
2016-07-21 17:19 ` Vincent Legoll
1 sibling, 1 reply; 16+ messages in thread
From: Ludovic Courtès @ 2016-07-21 15:54 UTC (permalink / raw)
To: Vincent Legoll; +Cc: help-guix
[-- Attachment #1: Type: text/plain, Size: 1988 bytes --]
Hi Vincent,
Vincent Legoll <vincent.legoll@gmail.com> skribis:
> I put this in a separate email, as it's becoming long...
>
> The packaging doc:
>
> https://www.gnu.org/software/guix/manual/guix.html#Defining-Packages
> is good, but still not enough for beginners.
>
> Essentially it's missing what is hidden behind "Without being a Scheme ..."
>
> It wouldn't hurt to have the scheme non-obvious parts explained:
>
> - the comma operator
> - the backquote operator
> - the quote operator
> - the arobase operator (is it for list unpacking ?)
> - the percent operator
> - the #: operator
> - the different module import things (#:use-module vs (use-modules) vs ...)
>
> (Forgive my probably-not-appropriate terms.)
>
> No need to explain function calls, string quoting and simple stuff, though.
>
> I tried to find a good tutorial explaining all of those, but couldn't. I found
> snippets that helped me understand some of those, but they were scattered,
> and it's still blurry.
>
> Specific explanations will be more useful that a general scheme tutorial, the
> hello.scm is good as an example :
>
> (inputs `(("gawk" ,gawk)))
>
> here we use the backquote because ...
> the comma is there for ...
>
> (arguments `(#:configure-flags '("--enable-silent-rules")))
>
> here the #: means ...
> we use the simple quote because ...
I would propose the patch below as a start. While it does not give
detailed explanations, it provides terminology and pointers, in
particular to this section of the Guile manual:
https://www.gnu.org/software/guile/manual/html_node/Expression-Syntax.html
Unfortunately, this section of Guile’s manual is a reference and it
lacks examples and a good overview. I think we should fix it on Guile’s
side instead of palliating this deficiency in Guix’s manual.
If nobody beats me at it, I can try and improve this is in Guile’s
manual afterwards.
What do you think?
Thanks,
Ludo’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1882 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index e7b233d..8d332f6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2452,12 +2452,35 @@ The @code{arguments} field specifies options for the build system
@var{gnu-build-system} as a request run @file{configure} with the
@code{--enable-silent-rules} flag.
+@cindex quote
+@cindex quoting
+@cindex backquote (quasiquote)
+What about these backquote (@code{`}) and quote (@code{'}) characters?
+They are Scheme syntax to introduce a literal data structure; @code{'}
+is synonymous with @code{quote}, and @code{`} is synonymous with
+@code{quasiquote}. @xref{Expression Syntax, quoting,, guile, GNU Guile
+Reference Manual}, for details. Here the value of the @code{arguments}
+field is a list of arguments passed to the build system.
+
+The hash-colon (@code{#:}) sequence defines a Scheme @dfn{keyword}
+(@pxref{Keywords,,, guile, GNU Guile Reference Manual}), and
+@code{#:configure-flags} is a keyword used to pass a keyword argument
+to the build system (@pxref{Coding With Keywords,,, guile, GNU Guile
+Reference Manual}).
+
@item
The @code{inputs} field specifies inputs to the build process---i.e.,
build-time or run-time dependencies of the package. Here, we define an
input called @code{"gawk"} whose value is that of the @var{gawk}
variable; @var{gawk} is itself bound to a @code{<package>} object.
+@cindex comma (unquote)
+Again, @code{`} (@code{quasiquote}) allows us to introduce a literal
+list in the @code{inputs} field, while @code{,} (a comma, synonymous
+with @code{unquote}) allows us to insert a value in the list
+(@pxref{Expression Syntax, unquote,, guile, GNU Guile Reference
+Manual}).
+
Note that GCC, Coreutils, Bash, and other essential tools do not need to
be specified as inputs here. Instead, @var{gnu-build-system} takes care
of ensuring that they are present (@pxref{Build Systems}).
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 15:52 ` Ricardo Wurmus
@ 2016-07-21 17:13 ` Vincent Legoll
2016-07-22 8:30 ` Chris Marusich
2016-07-23 10:21 ` Andreas Enge
1 sibling, 1 reply; 16+ messages in thread
From: Vincent Legoll @ 2016-07-21 17:13 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: help-guix
Hello,
Thanks a lot, this is really helpful !
On Thu, Jul 21, 2016 at 5:52 PM, Ricardo Wurmus <rekado@elephly.net> wrote:
>> - the comma operator
>> - the backquote operator
>> - the quote operator
>> - the arobase operator (is it for list unpacking ?)
>
> These are all about list quoting.
> This is code:
>
> (+ 1 2 3)
>
> It evaluates to 6.
>
> This is quoted code (aka data):
>
> '(+ 1 2 3)
Those I knew/remembered from my CS student days, it's the other
2 I didn't grok...
> It doesn’t get evaluated any further.
> This is pretty much the same as:
>
> `(+ 1 2 3)
>
> But with the backtick (called “quasiquote”) you are permitted to
> temporarily switch from “data mode” to “code mode”. That’s what the
> comma (“unquote”) does:
>
> `(+ 1 2 3 4 ,(+ 3 2) 6)
> ^ ^
> data mode code mode
>
> The result is the same as
>
> '(+ 1 2 3 4 5 6)
>
> What’s nice about this is that we can use the same syntax for code that
> is to be evaluated right now and for code that we want to pass somewhere
> else as inert data which will be evaluated at a later point.
>
> This allows for “staging”. When you look at a typical package
> expression you see that the value of the “arguments” field is quoted.
> It is not evaluated right away but in a second stage.
>
> The value of the inputs field is also quoted. You see that we unquote
> the values of package variables there. Package expressions in Guix are
> just Scheme values. The inputs field does not merely hold a list of
> symbols that somehow represent the packages — it actually contains the
> very values themselves!
>
> “,@” is for splicing lists:
That one I guessed, but wasn't sure because of the still unknown comma...
Python has something similar, but it does not look as useful as this, especially
with that quasiquote thing...
> (let ((moo '(1 2 3)))
> `(foo bar ,@moo meh))
>
> This binds the list '(1 2 3) to the name “moo” and then splices it into
> another list. This results in
>
> '(foo bar 1 2 3 meh)
>
> Without the “@” and just a regular unquote comma it would be a nested
> list:
>
> (let ((moo '(1 2 3)))
> `(foo bar ,moo meh))
>
> => '(foo bar (1 2 3) meh)
>
> Quoting and unquoting is a very useful feature. I hope my explanations
> above are easy to understand.
Perfect, clear, that was just what I needed. I will not immediately
be used to those concepts, but I understand what they do, that's
sufficient to read code...
The big problem with the abbreviated forms is that they're not easily
googlable, if I knew their long names, I could've found them in online
doc...
>> - the percent operator
>
> That’s no operator. It’s part of the name. We use the percent as a
> prefix for variables that are “special”, e.g. global variables or
OK, only a naming convention then ?
> values that appear without having to be explicitly let-bound.
That could use a little pointer, because the idea is strange, you
mean implicit variables (bindings), kind of like perl's $_ ?
>> - the #: operator
>
> These are called keyword arguments. They are no operators either.
> Using keyword arguments allows you to specify arguments by name, not in
> some fixed order.
That I also guessed (I'm coming from **kwargs-land...), but they also look
more powerful...
>> - the different module import things (#:use-module vs (use-modules) vs ...)
>
> That’s probably explained in the Guile reference manual.
Yes, I read a bit about that in there, but the following is what I
wanted to know :
> We use “#:use-module” only in module definitions.
> “(use-modules …)” can be used anywhere else.
> Yeah, I agree. There should be a quick crash course. I spent half the
> day yesterday to introduce all these things to a colleague who will
> create a few Guix packages in the future. It would be cool to have this
> as part of the manual.
Thanks a lot, this is just what's missing, and looks like Ludo's covered the
.texi part !
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 15:54 ` Ludovic Courtès
@ 2016-07-21 17:19 ` Vincent Legoll
2016-07-21 18:04 ` Vincent Legoll
0 siblings, 1 reply; 16+ messages in thread
From: Vincent Legoll @ 2016-07-21 17:19 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: help-guix
Thanks Ludo,
> I would propose the patch below as a start. While it does not give
> detailed explanations, it provides terminology and pointers, in
> particular to this section of the Guile manual:
>
> https://www.gnu.org/software/guile/manual/html_node/Expression-Syntax.html
this is nice, the pointer to the reference is actually the nicest
part because of the ungooglability of the various quoting characters.
And the small local explanation is good too.
> Unfortunately, this section of Guile’s manual is a reference and it
> lacks examples and a good overview. I think we should fix it on Guile’s
> side instead of palliating this deficiency in Guix’s manual.
>
> If nobody beats me at it, I can try and improve this is in Guile’s
> manual afterwards.
I'll go read it and see what I find missing
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 17:19 ` Vincent Legoll
@ 2016-07-21 18:04 ` Vincent Legoll
2016-07-22 7:13 ` Vincent Legoll
2016-07-22 12:41 ` Ludovic Courtès
0 siblings, 2 replies; 16+ messages in thread
From: Vincent Legoll @ 2016-07-21 18:04 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: help-guix
> I'll go read it and see what I find missing
quick ideas:
1 - the concept index has those: ! # ( . / maybe add ` ' , ,@ with
their aliases / long names alongside (quote, quasiquote, unquote,
unquote-splicing)
2 - they are well hidden in :
The Guile Reference Manual
API Reference
Reading and Evaluating Scheme Code
Scheme Syntax: Standard and Guile Extensions
Expression Syntax
That's far away, and the title don't help find them...
In the mean time I did a search "guile scheme quote", and indeed the
right doc page is there (16th on duckduckgo), and google is way
better (1st place)...
I forgot that sometimes google gives better answers than ddg...
3 - I'd add the following to (unquote-splicing expr):
`(1 ,x 4) ⇒ (1 (2 3) 4)
to better demonstrate the effect of splicing
and to (unquote expr) :
`(1 2 (* 9 9) 3 4) ⇒ (1 2 (* 9 9) 3 4)
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 18:04 ` Vincent Legoll
@ 2016-07-22 7:13 ` Vincent Legoll
2016-07-22 12:23 ` Ludovic Courtès
2016-07-22 12:41 ` Ludovic Courtès
1 sibling, 1 reply; 16+ messages in thread
From: Vincent Legoll @ 2016-07-22 7:13 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: help-guix
Just to see if I understood properly...
In the hello.scm example, there is :
(arguments `(#:configure-flags '("--enable-silent-rules")))
1 - can the quasiquote be replaced by a regular quote, because
unquote is not used ?
I'd guess yes, now I'll try it... <later>
So, it seems like we can change the quasiquote to a simple quote.
A question remains, why do the configure flags need to be a quoted list ?
Is it because it could be a function call evaluated by the gnu-build-system
which has to return a list of strings ?
That would mean the following should work:
(arguments `(#:configure-flags (lambda () (list "--enable-silent-rules"))))
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 17:13 ` Vincent Legoll
@ 2016-07-22 8:30 ` Chris Marusich
0 siblings, 0 replies; 16+ messages in thread
From: Chris Marusich @ 2016-07-22 8:30 UTC (permalink / raw)
To: Vincent Legoll; +Cc: help-guix
[-- Attachment #1: Type: text/plain, Size: 1047 bytes --]
Vincent Legoll <vincent.legoll@gmail.com> writes:
> The big problem with the abbreviated forms is that they're not easily
> googlable, if I knew their long names, I could've found them in online
> doc...
FYI, one of the best ways to find that information is to look it up in
the manual by index or by searching the entire manual for the string.
For example, in both the standard Info reader and the Emacs info reader,
you can press "i", type ",@" (without quotes), hit enter, and you will
magically arrive at the right section. If that doesn't work, you
can also do C-s to incrementally search the entire manual for the string
in question.
This works in any well-written manual authored with GNU Texinfo. For
example, if you want to know about the "perror" function from the GNU C
Library, just pull up the manual and type "i", then "perror", the hit
enter.
This is often faster and more accurate than doing an Internet search for
the symbols. It's a great feature of any manual written in GNU Texinfo!
--
Chris
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-22 7:13 ` Vincent Legoll
@ 2016-07-22 12:23 ` Ludovic Courtès
2016-07-22 12:43 ` Vincent Legoll
0 siblings, 1 reply; 16+ messages in thread
From: Ludovic Courtès @ 2016-07-22 12:23 UTC (permalink / raw)
To: Vincent Legoll; +Cc: help-guix
Vincent Legoll <vincent.legoll@gmail.com> skribis:
> Just to see if I understood properly...
>
> In the hello.scm example, there is :
>
> (arguments `(#:configure-flags '("--enable-silent-rules")))
>
> 1 - can the quasiquote be replaced by a regular quote, because
> unquote is not used ?
Yes.
> A question remains, why do the configure flags need to be a quoted list ?
It’s a list of arguments that gets passed to a function down the road.
Thanks for your feedback!
Ludo’.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 18:04 ` Vincent Legoll
2016-07-22 7:13 ` Vincent Legoll
@ 2016-07-22 12:41 ` Ludovic Courtès
2016-07-22 12:46 ` Vincent Legoll
1 sibling, 1 reply; 16+ messages in thread
From: Ludovic Courtès @ 2016-07-22 12:41 UTC (permalink / raw)
To: Vincent Legoll; +Cc: help-guix
Vincent Legoll <vincent.legoll@gmail.com> skribis:
> quick ideas:
>
> 1 - the concept index has those: ! # ( . / maybe add ` ' , ,@ with
> their aliases / long names alongside (quote, quasiquote, unquote,
> unquote-splicing)
Good idea.
> 2 - they are well hidden in :
>
> The Guile Reference Manual
> API Reference
> Reading and Evaluating Scheme Code
> Scheme Syntax: Standard and Guile Extensions
> Expression Syntax
>
> That's far away, and the title don't help find them...
>
> In the mean time I did a search "guile scheme quote", and indeed the
> right doc page is there (16th on duckduckgo), and google is way
> better (1st place)...
>
> I forgot that sometimes google gives better answers than ddg...
I have no control over search engines. :-)
> 3 - I'd add the following to (unquote-splicing expr):
>
> `(1 ,x 4) ⇒ (1 (2 3) 4)
>
> to better demonstrate the effect of splicing
>
> and to (unquote expr) :
>
> `(1 2 (* 9 9) 3 4) ⇒ (1 2 (* 9 9) 3 4)
I’d prefer to avoid duplication with the Guile manual.
I pushed a variant of what I had posted as commit
654c0d97c9de4bf25b9facda1278835883555ae0.
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-22 12:23 ` Ludovic Courtès
@ 2016-07-22 12:43 ` Vincent Legoll
0 siblings, 0 replies; 16+ messages in thread
From: Vincent Legoll @ 2016-07-22 12:43 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: help-guix
>> A question remains, why do the configure flags need to be a quoted list ?
>
> It’s a list of arguments that gets passed to a function down the road.
but as the list of arguments is already in a quoted list, it is quoted and not
interpreted here.
'(toto (titi)) => (toto (titi))
and not an error telling titi is unbound variable.
'(toto '(titi)) => (toto (quote (titi)))
there's an additional quote level...
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-22 12:41 ` Ludovic Courtès
@ 2016-07-22 12:46 ` Vincent Legoll
2016-07-22 14:41 ` Ludovic Courtès
0 siblings, 1 reply; 16+ messages in thread
From: Vincent Legoll @ 2016-07-22 12:46 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: help-guix
> I have no control over search engines. :-)
Yep, that was just a lame excuse, sorry...
;-)
>> 3 - I'd add the following to (unquote-splicing expr):
>>
>> `(1 ,x 4) ⇒ (1 (2 3) 4)
>>
>> to better demonstrate the effect of splicing
>>
>> and to (unquote expr) :
>>
>> `(1 2 (* 9 9) 3 4) ⇒ (1 2 (* 9 9) 3 4)
>
> I’d prefer to avoid duplication with the Guile manual.
Those additional examples would have been for:
https://www.gnu.org/software/guile/manual/guile.html#Expression-Syntax
and not for the guix manual...
Do you want me to submit a patch for those ?
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-22 12:46 ` Vincent Legoll
@ 2016-07-22 14:41 ` Ludovic Courtès
2016-07-22 20:01 ` Vincent Legoll
0 siblings, 1 reply; 16+ messages in thread
From: Ludovic Courtès @ 2016-07-22 14:41 UTC (permalink / raw)
To: Vincent Legoll; +Cc: help-guix
Vincent Legoll <vincent.legoll@gmail.com> skribis:
>>> 3 - I'd add the following to (unquote-splicing expr):
>>>
>>> `(1 ,x 4) ⇒ (1 (2 3) 4)
>>>
>>> to better demonstrate the effect of splicing
>>>
>>> and to (unquote expr) :
>>>
>>> `(1 2 (* 9 9) 3 4) ⇒ (1 2 (* 9 9) 3 4)
>>
>> I’d prefer to avoid duplication with the Guile manual.
>
> Those additional examples would have been for:
> https://www.gnu.org/software/guile/manual/guile.html#Expression-Syntax
> and not for the guix manual...
Ah OK, done:
http://git.savannah.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=141e390b596bfb6464f4d692381232e974de8783
Ludo’.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-22 14:41 ` Ludovic Courtès
@ 2016-07-22 20:01 ` Vincent Legoll
0 siblings, 0 replies; 16+ messages in thread
From: Vincent Legoll @ 2016-07-22 20:01 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: help-guix
>> Those additional examples would have been for:
>> https://www.gnu.org/software/guile/manual/guile.html#Expression-Syntax
>> and not for the guix manual...
>
> Ah OK, done:
>
> http://git.savannah.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=141e390b596bfb6464f4d692381232e974de8783
Great, this should help
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-21 15:52 ` Ricardo Wurmus
2016-07-21 17:13 ` Vincent Legoll
@ 2016-07-23 10:21 ` Andreas Enge
2016-07-23 10:36 ` Vincent Legoll
1 sibling, 1 reply; 16+ messages in thread
From: Andreas Enge @ 2016-07-23 10:21 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: help-guix
Hello Ricardo,
On Thu, Jul 21, 2016 at 05:52:43PM +0200, Ricardo Wurmus wrote:
> > - the comma operator
> > - the backquote operator
> > - the quote operator
> > - the arobase operator (is it for list unpacking ?)
> These are all about list quoting.
very nice explanations! I wonder whether this should not appear in the manual
or in some blog post that discusses how to contribute to Guix.
Andreas
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Newbie packagers
2016-07-23 10:21 ` Andreas Enge
@ 2016-07-23 10:36 ` Vincent Legoll
0 siblings, 0 replies; 16+ messages in thread
From: Vincent Legoll @ 2016-07-23 10:36 UTC (permalink / raw)
To: Andreas Enge; +Cc: help-guix
Hello,
> On Thu, Jul 21, 2016 at 05:52:43PM +0200, Ricardo Wurmus wrote:
>> > - the comma operator
>> > - the backquote operator
>> > - the quote operator
>> > - the arobase operator (is it for list unpacking ?)
>> These are all about list quoting.
>
> very nice explanations!
Yep, I understood them... ;-)
> I wonder whether this should not appear in the manual
> or in some blog post that discusses how to contribute to Guix.
Parts of that has already percolated into guile & guix manuals...
The most important one IMHO, being the reference link from
guix -> guile...
I don't know when they'll be updated on the web, but the modifs
are committed...
--
Vincent Legoll
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2016-07-23 10:36 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-21 13:21 Newbie packagers Vincent Legoll
2016-07-21 15:52 ` Ricardo Wurmus
2016-07-21 17:13 ` Vincent Legoll
2016-07-22 8:30 ` Chris Marusich
2016-07-23 10:21 ` Andreas Enge
2016-07-23 10:36 ` Vincent Legoll
2016-07-21 15:54 ` Ludovic Courtès
2016-07-21 17:19 ` Vincent Legoll
2016-07-21 18:04 ` Vincent Legoll
2016-07-22 7:13 ` Vincent Legoll
2016-07-22 12:23 ` Ludovic Courtès
2016-07-22 12:43 ` Vincent Legoll
2016-07-22 12:41 ` Ludovic Courtès
2016-07-22 12:46 ` Vincent Legoll
2016-07-22 14:41 ` Ludovic Courtès
2016-07-22 20:01 ` Vincent Legoll
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.