@(next :args) @(cases) @{key /[0-9]+/} @text @(or) @ (throw error "specify ") @(end) @(do (defvar k (int-str key 10))) @(bind enc-dec @(collect-each ((i (range 0 25))) (let* ((p (tostringp (+ #\a i))) (e (tostringp (+ #\a (mod (+ i k) 26)))) (P (upcase-str p)) (E (upcase-str e))) ^(((,p ,e) (,P ,E)) ((,e ,p) (,E ,P)))))) @(deffilter enc . @(mappend (fun first) enc-dec)) @(deffilter dec . @(mappend (fun second) enc-dec)) @(output) encoded: @{text :filter enc} decoded: @{text :filter dec} @(end)