// Helper synonyms: // type Char = [8] module Enigma where enigmaLoop : {n}(fin n) => [n] enigmaLoop = undefined // Encryption/Decryption enigma : {n, m} (fin n, fin m) => ([n], [m]) -> [m] enigma (m, pt) = tail [ True | _ <- rcs ] where rcs = [ (m, True)] # [ (enigmaLoop, True) | _ <- pt | (_,_) <- rcs ]