(let pad (comp str (pad-right " " 10))) (print "a b | (and a b) (or a b) (not a) (xor a b)") (print (str* "-" 20) "+" (str* "-" 40)) (join "\n" (for a [false :a] b [false :b] (... str (pad a) (pad b) "| " (for op [and or not xor] (pad (if (= op not) (op a) (op a b)))))))