From 54d5ce4ecdc414c74afd3cf2b37fbebb82c3cc81 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 20 Jul 2021 16:32:50 +0530 Subject: ccwl: Document syntax-lambda** support for default arguments. * ccwl/utils.scm (syntax-lambda**): Add example to docstring documenting support for default arguments. * tests/utils.scm ("syntax-lambda** with default values"): New test. --- ccwl/utils.scm | 10 +++++++++- tests/utils.scm | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ccwl/utils.scm b/ccwl/utils.scm index 067308f..c018237 100644 --- a/ccwl/utils.scm +++ b/ccwl/utils.scm @@ -183,7 +183,15 @@ writing macros that accept keyword arguments. For example, ((syntax-lambda** (a b #:key foo #:key* bar) (list a b foo bar)) #'(foo 1 2 #:foo 123 #:bar 1 2 3)) -=> (#'1 #'2 #'123 (#'1 #'2 #'3))" +=> (#'1 #'2 #'123 (#'1 #'2 #'3)) + +Just like lambda**, syntax-lambda** also supports default values for +arguments. For example, + +((syntax-lambda** (foo aal #:key vale (pal 9) #:key* naal (irandu 7) (sol 3 2 1)) + (list foo aal vale pal naal irandu sol)) + #'(bar 1 2 #:vale 123 #:naal 321 456)) +=> (#'1 #'2 #'123 9 (#'321 #'456) (7) (3 2 1))" (lambda (x) (apply (lambda** formal-args body ...) (with-ellipsis ::: diff --git a/tests/utils.scm b/tests/utils.scm index 473bd45..5c5bfd1 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -76,6 +76,12 @@ (list a b foo bar)) #'(foo 1 2 #:foo 123 #:bar 1 2 3)))) +(test-assert "syntax-lambda** with default values" + (equal? (list #'1 #'2 #'123 9 #'(321 456) '(7) '(3 2 1)) + ((syntax-lambda** (foo aal #:key vale (pal 9) #:key* naal (irandu 7) (sol 3 2 1)) + (list foo aal vale pal naal irandu sol)) + #'(bar 1 2 #:vale 123 #:naal 321 456)))) + (test-equal "filter-mapi" '(1 3 5 7 9) (filter-mapi (lambda (item index) -- cgit v1.2.3