Blob
1 (defun enumerate-interval (low high)2 (if (> low high)3 nil4 (cons low (enumerate-interval (1+ low) high))))5 (defun flatpmap (proc seq)6 (accumulate #'append nil (mapcar proc seq)))7 (defun sum (lst)8 (accumulate #'+ 0 lst))9 (defun prime-sum? (pair)10 (prime? (sum pair)))11 (defun make-pair-sum (pair)12 (list (car pair) (cadr pair) (sum pair)))13 (defun unique-pairs (n)14 (flatmap15 (lambda (i)16 (mapcar (lambda (j) (list i j))17 (enumerate-interval 1 (1- i))))18 (enumerate-interval 1 n)))19 (defun prime-sum-pairs (n)20 (mapcar21 #'make-pair-sum22 (filter #'prime-sum? (unique-pairs n))))