22 lines
517 B
Scheme
22 lines
517 B
Scheme
|
|
(module utils mzscheme
|
|
(provide alternates
|
|
interleave)
|
|
|
|
(define (alternates l)
|
|
(let loop ([l l])
|
|
(cond
|
|
[(null? l) (values null null)]
|
|
[(null? (cdr l)) (values l null)]
|
|
[else
|
|
(let-values ([(as bs) (loop (cddr l))])
|
|
(values (cons (car l) as)
|
|
(cons (cadr l) bs)))])))
|
|
|
|
(define (interleave l1 l2)
|
|
(cond
|
|
[(null? l2) l1]
|
|
[else (list* (car l1)
|
|
(car l2)
|
|
(interleave (cdr l1) (cdr l2)))])))
|