commit 9797ba92c290b109e3102de132716aaf09742c38
parent 3cc298679c8f7895be9f34da9b5686f8d81a3617
Author: AlexKnauth <alexander@knauth.org>
Date: Tue, 24 May 2016 18:14:03 -0400
document kw-lists-lambda and kw-lists-case-lambda
Diffstat:
3 files changed, 57 insertions(+), 3 deletions(-)
diff --git a/kw-utils/docs/kw-hash.scrbl b/kw-utils/docs/kw-hash.scrbl
@@ -3,7 +3,7 @@
(for-label kw-utils/kw-hash
kw-utils/kw-hash-lambda
kw-utils/kw-hash/contract
- kw-utils/keyword-lambda
+ kw-utils/kw-lists-lambda
racket/base
racket/contract/base
racket/math
@@ -18,7 +18,7 @@
@defform[(kw-hash-lambda formals #:kws kw-hash-id body-expr ...+)]{
roughly equivalent to
@(racketblock
- (keyword-lambda (kws kw-args . formals)
+ (kw-lists-lambda kws kw-args formals
(let ([kw-hash-id (keyword-apply make-kw-hash kws kw-args '())])
body ...)))
diff --git a/kw-utils/docs/kw-lists-lambda.scrbl b/kw-utils/docs/kw-lists-lambda.scrbl
@@ -0,0 +1,54 @@
+#lang scribble/manual
+
+@(require racket/base
+ scribble/eval
+ (for-label kw-utils/kw-lists-lambda
+ kw-utils/keyword-lambda
+ racket/base))
+
+@title[#:tag "kw-lists-lambda.scrbl"]{kw-lists-lambda}
+
+@defmodule[kw-utils/kw-lists-lambda]
+
+@defform[(kw-lists-lambda kws kw-args args body ...)
+ #:grammar ([args (arg ...)
+ (arg ... . rest-id)
+ rest-id]
+ [arg arg-id
+ [arg-id default-expr]])]{
+roughly equivalent to
+@(racketblock
+ (make-keyword-procedure
+ (lambda (kws kw-args . args) body ...))
+ )
+
+@examples[
+ (require kw-utils/kw-lists-lambda)
+ (define proc
+ (kw-lists-lambda kws kw-args rest-args
+ (list kws kw-args rest-args)))
+ (proc #:a 'a #:b 'b 0 1 2)
+]}
+
+@defform[(kw-lists-case-lambda kws kw-args [args body ...] ...)
+ #:grammar ([args (arg-id ...)
+ (arg-id ... . rest-id)
+ rest-id])]{
+roughly equivalent to
+@(racketblock
+ (make-keyword-procedure
+ (case-lambda [(kws kw-args . args) body ...] ...))
+ )
+
+@examples[
+ (require kw-utils/kw-lists-lambda)
+ (define proc
+ (kw-lists-case-lambda kws kw-args
+ [(a)
+ (list kws kw-args a)]
+ [(a b)
+ (list kws kw-args a b)]))
+ (proc #:a 'a #:b 'b 0)
+ (proc #:a 'a #:b 'b 0 1)
+]}
+
diff --git a/kw-utils/docs/kw-utils.scrbl b/kw-utils/docs/kw-utils.scrbl
@@ -6,7 +6,7 @@ source code: @url["https://github.com/AlexKnauth/kw-utils"]
@local-table-of-contents[]
-@include-section[(lib "kw-utils/docs/keyword-lambda.scrbl")]
+@include-section[(lib "kw-utils/docs/kw-lists-lambda.scrbl")]
@include-section[(lib "kw-utils/docs/keyword-apply-sort.scrbl")]
@include-section[(lib "kw-utils/docs/arity+keywords.scrbl")]
@include-section[(lib "kw-utils/docs/kw-map.scrbl")]