aboutsummaryrefslogtreecommitdiff
path: root/ccwl/utils.scm
AgeCommit message (Collapse)Author
2022-01-16ccwl: Delete plist->alist.Arun Isaac
plist->alist is not used anywhere. pairify is quite sufficient to take on its functionality. * ccwl/utils.scm (plist->alist): Delete function. * tests/utils.scm ("plist->alist"): Delete test.
2022-01-16ccwl: Document default default value of syntax-lambda**.Arun Isaac
* ccwl/utils.scm (syntax-lambda**): Document default default value. * tests/utils.scm ("default default value of syntax-lambda** unary argument should be #f", "default default value of syntax-lambda** n-ary argument should be the empty list"): New tests.
2022-01-16ccwl: Clarify default default value of lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Change "default value" to "default default value" in docstring. * tests/utils.scm ("default value of lambda** unary argument should be #f", "default value of lambda** n-ary argument should be the empty list"): Change "default value" to "default default value".
2022-01-16ccwl: Raise lambda** and syntax-lambda** errors as exceptions.Arun Isaac
* ccwl/conditions.scm (&unrecognized-keyword-assertion, &invalid-keyword-arity-assertion, &invalid-positional-arguments-arity-assertion): New conditions. * ccwl/utils.scm: Import (rnrs conditions), (rnrs exceptions) and (ccwl conditions). (group-keyword-arguments): Raise &invalid-keyword-arity-assertion on error. (lambda**, syntax-lambda**): Raise &unrecognized-keyword-assertion, &invalid-keyword-arity-assertion and &invalid-positional-arguments-arity-assertion on error. * tests/utils.scm: Import (rnrs conditions), (rnrs exceptions), (srfi srfi-1) and (ccwl conditions). ("lambda** should raise an &unrecognized-keyword-assertion on unrecognized keywords in arguments with syntax objects as irritants"): Check for &unrecognized-keyword-assertion. ("Unrecognized keyword argument passed to lambda** should raise an &unrecognized-keyword-assertion condition", "Unary lambda** keyword argument passed multiple arguments should raise an &invalid-keyword-arity-assertion condition", "Wrong number of positional arguments to lambda** should raise an &invalid-positional-arguments-arity-assertion condition", "syntax-lambda** should raise an &unrecognized-keyword-assertion on unrecognized keywords in arguments", "Unrecognized keyword argument passed to syntax-lambda** should raise an &unrecognized-keyword-assertion condition with syntax objects as irritants", "Unary syntax-lambda** keyword argument passed multiple arguments should raise an &invalid-keyword-arity-assertion condition", "Wrong number of positional arguments to syntax-lambda** should raise an &invalid-positional-arguments-arity-assertion condition"): New tests.
2022-01-16ccwl: Indent lambda** docstring examples correctly.Arun Isaac
* ccwl/utils.scm (lambda**): Indent docstring examples correctly.
2021-10-12ccwl: Implement compiling to graphviz.Arun Isaac
* ccwl/yaml.scm (indent-level): Import (ccwl utils). Move to ... * ccwl/utils.scm (indent-level): ... here. Export indent-level. * ccwl/graphviz.scm: New file. * Makefile.am (SOURCES): Register it.
2021-10-04ccwl: Support #:allow-other-keys in lambda** and syntax-lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Support #:allow-other-keys. Update docstring. (syntax-lambda**): Update docstring. * tests/utils.scm ("Allow other keys in lambda**", "Allow other keys in syntax-lambda**"): New tests.
2021-10-04ccwl: Error out on invalid keywords to lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Error out on invalid keywords (that is, keywords other than #:key, #:key* and #:allow-other-keys). * tests/utils.scm ("lambda** should error out on unrecognized keywords in arguments"): New test.
2021-07-27ccwl: Make syntax-lambda** more like lambda**.Arun Isaac
I have tripped up several times on the differences between lambda** and syntax-lambda**. No longer! Making syntax-lambda** as close as possible to lambda** makes the code much more readable and align better with common sense. * ccwl/utils.scm (syntax-lambda**): Do not ignore the first identifier. Accept multiple values as arguments, not a single syntax object. * ccwl/ccwl.scm (command): Update use of syntax-lambda**. * tests/utils.scm ("syntax-lambda**", "syntax-lambda** with default values"): Update tests.
2021-07-20ccwl: Set default value of lambda** n-ary arguments to '().Arun Isaac
* ccwl/utils.scm (lambda**): Set default value of lambda** n-ary arguments to the empty list. Document this in the docstring. * tests/utils.scm ("default value of lambda** unary argument should be #f", "default value of lambda** n-ary argument should be the empty list"): New tests.
2021-07-20ccwl: Document syntax-lambda** support for default arguments.Arun Isaac
* ccwl/utils.scm (syntax-lambda**): Add example to docstring documenting support for default arguments. * tests/utils.scm ("syntax-lambda** with default values"): New test.
2021-07-20ccwl: Clarify difference between and lambda** and syntax-lambda**.Arun Isaac
* ccwl/utils.scm (syntax-lambda**): Clarify difference between and lambda** and syntax-lambda**.
2021-07-20ccwl: Support default values for arguments in lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Support default values for arguments, both unary and n-ary. * tests/utils.scm ("lambda** with default values"): New test.
2021-07-20ccwl: Add examples to docstrings.Arun Isaac
* ccwl/utils.scm (pairify, plist->alist, group-keyword-arguments, plist-ref, syntax-lambda**, filter-mapi, mapn, append-mapn, foldn): Add examples to docstrings.
2021-07-19ccwl: Add missing syntax in unsyntax-keywords docstring example.Arun Isaac
* ccwl/utils.scm (unsyntax-keywords): Add missing syntax in docstring example.
2021-06-01Add filter-mapi.Arun Isaac
* ccwl/utils.scm (filter-mapi): New public function.
2021-06-01Add syntax-lambda**.Arun Isaac
* ccwl/utils.scm (syntax-lambda**): New public macro.
2021-06-01Avoid datum->syntax.Arun Isaac
* ccwl/utils.scm (lambda**): Avoid using datum->syntax whenever possible.
2021-06-01Add unsyntax-keywords.Arun Isaac
* ccwl/utils.scm (unsyntax-keywords): New function.
2021-05-15Add list functions for multi-valued functions.Arun Isaac
* ccwl/utils.scm (mapn, append-mapn, foldn): New public functions.
2021-04-26Add plist->alist.Arun Isaac
* ccwl/utils.scm (pairify, plist->alist): New public functions.
2021-04-17Expand name Arun I to Arun Isaac.Arun Isaac
* ccwl/ccwl.scm, ccwl/utils.scm, ccwl/yaml.scm: Expand name Arun I to Arun Isaac.
2021-04-16Add copyright and commentary sections to files.Arun Isaac
* ccwl/ccwl.scm, ccwl/utils.scm, ccwl/yaml.scm: Add copyright and commentary sections.
2021-04-16Implement lambda** n-ary keyword function.Arun Isaac
* ccwl/utils.scm: Export lambda** instead of group-arguments. (group-arguments): Delete function. (lambda**): New macro.
2021-04-16Make unary-keywords argument of group-keyword-arguments optional.Arun Isaac
* ccwl/utils.scm (group-keyword-arguments): Make unary-keywords optional.
2021-04-16Add plist-ref utility.Arun Isaac
* ccwl/utils.scm: Import (srfi srfi-26). (plist-ref): New function.
2021-04-12Support n-ary keyword arguments.Arun Isaac
* ccwl/utils.scm: New file.