mirror of
https://github.com/teo3300/rust-mal.git
synced 2026-01-12 01:05:32 +01:00
16 lines
528 B
Plaintext
16 lines
528 B
Plaintext
(def! concat (fn* [x y] (def! concat-r (fn* [x y t]
|
|
"Concatenate arguments, keeping their order"
|
|
(if (car x)
|
|
(concat-r (cdr x) y (cons (car x) t))
|
|
(if (car y)
|
|
(concat-r '() (cdr y) (cons (car y) t))
|
|
t))))
|
|
(concat-r (reverse y) (reverse x) '())))
|
|
|
|
(def! distribute (fn* [x] (def! distribute-r (fn* [p n t]
|
|
(if (empty? n)
|
|
t
|
|
(let* [c (car n) n (cdr n)]
|
|
(distribute-r (cons c p) n (cons (cons c (concat p n)) t))))))
|
|
(distribute-r '() x '())))
|