Coverage report: /home/ellis/.stash/quicklisp/dists/quicklisp/software/alexandria-20241012-git/alexandria-2/control-flow.lisp

KindCoveredAll%
expression040 0.0
branch02 0.0
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 (in-package :alexandria-2)
2
 
3
 (defun line-up-iter (thread-first-p acc forms)
4
   "Iterative implementation for `thread-iter'.
5
 
6
 The THREAD-FIRST-P decides where to thread the FORMS, accumulating in ACC."
7
   (if forms
8
       (line-up-iter thread-first-p
9
                    (let ((form (car forms)))
10
                      (if (listp form)
11
                          (if thread-first-p
12
                              (apply #'list (car form) acc (cdr form))
13
                              (append form (cons acc nil)))
14
                          (list form acc)))
15
                    (cdr forms))
16
       acc))
17
 
18
 (defmacro line-up-first (&rest forms)
19
   "Lines up FORMS elements as the first argument of their successor.
20
 Example:
21
 
22
  (line-up-first
23
    5
24
    (+ 20)
25
    /
26
    (+ 40))
27
 
28
 is equivalent to:
29
 
30
  (+ (/ (+ 5 20)) 40)
31
 
32
 Note how the single '/ got converted into a list before
33
 threading."
34
   (line-up-iter t (car forms) (cdr forms)))
35
 
36
 (defmacro line-up-last (&rest forms)
37
   "Lines up FORMS elements as the last argument of their successor.
38
 Example:
39
 
40
  (line-up-last
41
    5
42
    (+ 20)
43
    /
44
    (+ 40))
45
 
46
 is equivalent to:
47
 
48
     (+ 40 (/ (+ 20 5)))
49
 
50
 Note how the single '/ got converted into a list before
51
 threading."
52
   (line-up-iter nil (car forms) (cdr forms)))