(let* ((vector-1 #(1 2 3 4 5 6 7 8 9 10)) (vector-2 #(11 12 13 14 15)) (length-1 (length vector-1)) (length-2 (length vector-2)) (result (make-array (list length-1 length-2)))) (loop for elt-1 across vector-1 for index-1 from 0 do (loop for elt-2 across vector-2 for index-2 from 0 do (setf (aref result index-1 index-2) (* elt-1 elt-2)))) result) #2A((11 12 13 14 15 ) (22 24 26 28 30 ) (33 36 39 42 45 ) (44 48 52 56 60 ) (55 60 65 70 75 ) (66 72 78 84 90 ) (77 84 91 98 105) (88 96 104 112 120) (99 108 117 126 135) (110 120 130 140 150))