~ chicken-core (chicken-5) 9d6a21eee1c7d8655c738ab6541d22e870a766eb
commit 9d6a21eee1c7d8655c738ab6541d22e870a766eb Author: Peter Bex <peter.bex@xs4all.nl> AuthorDate: Sat Jul 12 16:48:38 2014 +0200 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Sat Jul 12 16:48:38 2014 +0200 Update manual to mention basic lambda list syntax for define-values, set!-values. Make the naming of the expressions consistent with receive, and point out the similarity of the forms. diff --git a/manual/Non-standard macros and special forms b/manual/Non-standard macros and special forms index 498592e4..9325124f 100644 --- a/manual/Non-standard macros and special forms +++ b/manual/Non-standard macros and special forms @@ -197,10 +197,12 @@ is the same as {{(letrec ((NAME (lambda (VARIABLE ...) BODY ...))) NAME)}}. ==== define-values -<macro>(define-values (NAME ...) EXP)</macro> +<macro>(define-values (NAME ...) VALUEEXP)</macro> +<macro>(define-values (NAME1 ... NAMEn . NAMEn+1) VALUEEXP)</macro> +<macro>(define-values NAME VALUEEXP)</macro> Defines several variables at once, with the result values of expression -{{EXP}}. +{{VALUEEXP}}, similar to {{set!-values}}. ==== fluid-let @@ -212,17 +214,17 @@ This implements [[http://srfi.schemers.org/srfi-15/srfi-15.html|SRFI-15]]. ==== let-values -<macro>(let-values (((NAME ...) EXP) ...) BODY ...)</macro> +<macro>(let-values (((NAME ...) VALUEEXP) ...) BODY ...)</macro> -Binds multiple variables to the result values of {{EXP ...}}. +Binds multiple variables to the result values of {{VALUEEXP ...}}. All variables are bound simultaneously. This implements [[http://srfi.schemers.org/srfi-11/srfi-11.html|SRFI-11]]. ==== let*-values -<macro>(let*-values (((NAME ...) EXP) ...) BODY ...)</macro> +<macro>(let*-values (((NAME ...) VALUEEXP) ...) BODY ...)</macro> -Binds multiple variables to the result values of {{EXP ...}}. +Binds multiple variables to the result values of {{VALUEEXP ...}}. The variables are bound sequentially. This is also part of [[http://srfi.schemers.org/srfi-11/srfi-11.html|SRFI-11]]. @@ -234,9 +236,9 @@ This is also part of [[http://srfi.schemers.org/srfi-11/srfi-11.html|SRFI-11]]. ==== letrec-values -<macro>(letrec-values (((NAME ...) EXP) ...) BODY ...)</macro> +<macro>(letrec-values (((NAME ...) VALUEEXP) ...) BODY ...)</macro> -Binds the result values of {{EXP ...}} to multiple variables at once. +Binds the result values of {{VALUEEXP ...}} to multiple variables at once. All variables are mutually recursive. <enscript highlight=scheme> @@ -265,17 +267,20 @@ expression that evaluates to a parameter procedure. [[http://srfi.schemers.org/srfi-8/srfi-8.html|SRFI-8]]. Syntactic sugar for {{call-with-values}}. Binds variables -to the result values of {{VALUEEXP}} and evaluates {{BODY ...}}. +to the result values of {{VALUEEXP}} and evaluates {{BODY ...}}, +similar {{define-values}} but lexically scoped. {{(receive VALUEEXP)}} is equivalent to {{(receive _ VALUEEXP _)}}. This shortened form is not described by SRFI-8. ==== set!-values -<macro>(set!-values (NAME ...) EXP)</macro> +<macro>(set!-values (NAME ...) VALUEEXP)</macro> +<macro>(set!-values (NAME1 ... NAMEn . NAMEn+1) VALUEEXP)</macro> +<macro>(set!-values NAME VALUEEXP)</macro> -Assigns the result values of expression {{EXP}} to multiple -variables. +Assigns the result values of expression {{VALUEEXP}} to multiple +variables, similar to {{define-values}}. === Substitution forms and macrosTrap