(function caeser by of (let alphabets (proj (map char-code) (range 65 91) (range 97 123)) shifted (.. vec (map (rotate by) alphabets)) table (kv-dict (flatten alphabets) (flatten shifted))) (... str (map #(or (table %) %) of))) (let original "The Quick Brown Fox Jumps Over The Lazy Dog." encrypted (caeser -1 original) decrypted (caeser 1 encrypted)) "Original: {original} Encrypted: {encrypted} Decrypted: {decrypted}"