diff options
author | Arun Isaac | 2021-04-25 22:34:06 +0530 |
---|---|---|
committer | Arun Isaac | 2021-04-26 00:23:37 +0530 |
commit | 03ea705f5e6162d6d9dc7417e0db14d96c5715bb (patch) | |
tree | 85f2a2e47050dcfb89bb502b5ae37490364ada7d | |
parent | c1a8a656005d79ebcdd2e4e0a2bfbb111da0dfe3 (diff) | |
download | ccwl-03ea705f5e6162d6d9dc7417e0db14d96c5715bb.tar.gz ccwl-03ea705f5e6162d6d9dc7417e0db14d96c5715bb.tar.lz ccwl-03ea705f5e6162d6d9dc7417e0db14d96c5715bb.zip |
Add plist->alist.
* ccwl/utils.scm (pairify, plist->alist): New public functions.
-rw-r--r-- | ccwl/utils.scm | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ccwl/utils.scm b/ccwl/utils.scm index 4f041a7..c20aae1 100644 --- a/ccwl/utils.scm +++ b/ccwl/utils.scm @@ -27,7 +27,25 @@ #:use-module (srfi srfi-26) #:use-module (srfi srfi-71) #:use-module (ice-9 match) - #:export (lambda**)) + #:export (pairify + plist->alist + lambda**)) + +(define (pairify lst) + "Return a list of pairs of successive elements of LST." + (match lst + (() '()) + ((first second tail ...) + (cons (cons first second) + (pairify tail))))) + +(define (plist->alist plist) + "Convert the property list PLIST to an association list. A property +list is a list of the form (#:key1 value1 #:key2 value2 ...)." + (map (match-lambda + ((key . value) + (cons (keyword->symbol key) value))) + (pairify plist))) (define* (group-keyword-arguments args #:optional (unary-keywords (list))) "Group ARGS, a list of keyword arguments of arbitrary arity. Return |