summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ccwl/utils.scm9
-rw-r--r--tests/utils.scm6
2 files changed, 12 insertions, 3 deletions
diff --git a/ccwl/utils.scm b/ccwl/utils.scm
index 508e884..d9d1ee3 100644
--- a/ccwl/utils.scm
+++ b/ccwl/utils.scm
@@ -1,5 +1,5 @@
 ;;; ccwl --- Concise Common Workflow Language
-;;; Copyright © 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2021, 2022, 2023 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of ccwl.
 ;;;
@@ -48,12 +48,17 @@
   (display (make-string (* 2 level) #\space) port))
 
 (define (pairify lst)
-  "Return a list of pairs of successive elements of LST. For example,
+  "Return a list of pairs of successive elements of LST. Ignore extra
+elements when LST has an odd number of elements. For example,
 
 (pairify (list 1 2 3 4 5 6))
+=> ((1 . 2) (3 . 4) (5 . 6))
+
+(pairify (list 1 2 3 4 5 6 7))
 => ((1 . 2) (3 . 4) (5 . 6))"
   (match lst
     (() '())
+    ((single-element) '())
     ((first second tail ...)
      (cons (cons first second)
            (pairify tail)))))
diff --git a/tests/utils.scm b/tests/utils.scm
index b630b10..66220cc 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -1,5 +1,5 @@
 ;;; ccwl --- Concise Common Workflow Language
-;;; Copyright © 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2021, 2022, 2023 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of ccwl.
 ;;;
@@ -216,4 +216,8 @@
                     0 0)))
     (list sum sum-of-squares)))
 
+(test-equal "pairify must ignore extra elements when list has an odd number of elements"
+  '((1 . 2) (3 . 4) (5 . 6))
+  (pairify (list 1 2 3 4 5 6 7)))
+
 (test-end "utils")