20 lines
676 B
Plaintext
20 lines
676 B
Plaintext
(defvar age-name '((27 Jonah)
|
|
(18 Alan)
|
|
(28 Glory)
|
|
(18 Popeye)
|
|
(28 Alan)))
|
|
|
|
(defvar nemesis-name '((Jonah Whales)
|
|
(Jonah Spiders)
|
|
(Alan Ghosts)
|
|
(Alan Zombies)
|
|
(Glory Buffy)))
|
|
|
|
(defun hash-join (left left-key right right-key)
|
|
(let ((join-hash [group-by left-key left])) ;; hash phase
|
|
(append-each ((r-entry right)) ;; join phase
|
|
(collect-each ((l-entry [join-hash [right-key r-entry]]))
|
|
^(,l-entry ,r-entry)))))
|
|
|
|
(format t "~s\n" [hash-join age-name second nemesis-name first])
|