diff options
author | Mathieu Lirzin <mthl@gnu.org> | 2016-07-30 22:57:49 +0200 |
---|---|---|
committer | Mathieu Lirzin <mthl@gnu.org> | 2016-07-30 23:08:39 +0200 |
commit | e58911de37f600dffce3c562ff1d26809343d420 (patch) | |
tree | 7f180bc8a579e2301dbb50fde2a3a6f18ce5f8b7 | |
parent | ac4512897c6e08f26f87d9b7ddd9120436610513 (diff) | |
download | cuirass-e58911de37f600dffce3c562ff1d26809343d420.tar cuirass-e58911de37f600dffce3c562ff1d26809343d420.tar.gz |
utils: Add 'alist?' procedure.
* src/cuirass/utils.scm (alist?): New procedure.
* tests/utils.scm ("alist?"): New test.
-rw-r--r-- | src/cuirass/utils.scm | 7 | ||||
-rw-r--r-- | tests/utils.scm | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/cuirass/utils.scm b/src/cuirass/utils.scm index 1667c02..56b9c6a 100644 --- a/src/cuirass/utils.scm +++ b/src/cuirass/utils.scm @@ -20,7 +20,9 @@ (define-module (cuirass utils) #:use-module (ice-9 match) + #:use-module (srfi srfi-1) #:export (;; Procedures + alist? mkdir-p make-user-module ;; Macros. @@ -30,6 +32,11 @@ (define-syntax-rule (λ* formals body ...) (lambda* formals body ...)) +(define (alist? obj) + "Return #t if OBJ is an alist." + (and (list? obj) + (every pair? obj))) + (define mkdir-p (let ((not-slash (char-set-complement (char-set #\/)))) (λ* (dir #:optional mode) diff --git a/tests/utils.scm b/tests/utils.scm index 496cbee..6a14355 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -25,6 +25,16 @@ (test-begin "utils") +(test-assert "alist?" + (and (alist? '()) + (alist? '(("foo" 1 2))) + (alist? '(("foo" . 1) + ("bar" . 2))) + (not (alist? 3)) + (not (alist? '(1 2 3))) + (not (alist? 'foo)) + (not (alist? #:bar)))) + (test-assert "with-directory-excursion" (let ((old (getcwd)) (tmp (tmpnam))) |