(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)) (str "Original: " original " Encrypted: " encrypted " Decrypted: " decrypted)