#!/usr/bin/runghc module SimpleSubCipher where import Data.List qualified as L letters :: String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" translateChar :: String -> String -> Char -> Char translateChar string1 string2 char = case L.elemIndex char string1 of Nothing -> char Just index -> string2 !! index translateString :: String -> String -> String -> String translateString string1 string2 = map (translateChar string1 string2) main :: IO () main = do let message = "THIS IS A SHORT MESSAGE" let key = "LFWOAYUISVKMNXPBDCRJTQEGHZ" putStrLn "Your encrypted message is:" putStrLn (translateString letters key message) putStrLn "Your decrypted ciphertext is:" putStrLn (translateString key letters (translateString letters key message))