diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/guix-cookbook.texi | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi index 28303df37b..ee66dad7d9 100644 --- a/doc/guix-cookbook.texi +++ b/doc/guix-cookbook.texi @@ -192,7 +192,8 @@ rest are the arguments passed to the function. Every function returns the last evaluated expression as its return value. @item -Anonymous functions are declared with the @code{lambda} term: +Anonymous functions---@dfn{procedures} in Scheme parlance---are declared +with the @code{lambda} term: @lisp (lambda (x) (* x x)) @@ -208,6 +209,9 @@ which can in turn be applied to an argument: @result{} 9 @end lisp +Procedures are regular values just like numbers, strings, Booleans, and +so on. + @item Anything can be assigned a global name with @code{define}: @@ -234,6 +238,30 @@ A list structure can be created with the @code{list} procedure: @end lisp @item +Standard procedures are provided by the @code{(srfi srfi-1)} module to +create and process lists (@pxref{SRFI-1, list processing,, guile, GNU +Guile Reference Manual}). Here are some of the most useful ones in +action: + +@lisp +(use-modules (srfi srfi-1)) ;import list processing procedures + +(append (list 1 2) (list 3 4)) +@result{} (1 2 3 4) + +(map (lambda (x) (* x x)) (list 1 2 3 4)) +@result{} (1 4 9 16) + +(delete 3 (list 1 2 3 4)) @result{} (1 2 4) +(filter odd? (list 1 2 3 4)) @result{} (1 3) +(remove even? (list 1 2 3 4)) @result{} (1 3) +(find number? (list "a" 42 "b")) @result{} 42 +@end lisp + +Notice how the first argument to @code{map}, @code{filter}, +@code{remove}, and @code{find} is a procedure! + +@item @cindex S-expression The @dfn{quote} disables evaluation of a parenthesized expression, also called an S-expression or ``s-exp'': the first term is not called over |